<@U06V253M4> fyi we just started publishing 7 snap...
# lucee
z
@bdw429s fyi we just started publishing 7 snapshots to s3, https://docs.lucee.org/recipes/breaking-changes-7.html#switching-to-jakarta-from-javax
👍 2
b
Cool, already have a jakarta version of runwar for commandbox which runs boxlang anf ACF 2025
z
sweet
b
There is a flag Lucee can set jn the box.json file for the CF engine which opts into jakarta starting in CommandBox 6.2.0
z
so the publisher needs to set that?
b
It needs to be in the actual box json of the zip file, which the Lucee update server creates
The box.json there js just temporary and not actually stored
z
ok what's the flag?
b
On my phone, let me find jt
I plan to release commandbox 6.2 tomorrow
You can still test it on the alpha builds
z
ok i'll do it tomorrow, gotta run and meet some mates
👍 1
b
I'm using the next to latest jakarta version as Adobe is dragging their feet.
z
cheers! l8r
How about allowing min version in addition to true?
b
Well, each cfengine zip has its own box.json, so it just needs to be set true or false based on the version of Lucee in thaf box.json
So the lucee update provider will perform that check when it creates the box.json for a given lucee cfengine
z
Yeah we're already doing that for 6.2
there was that location property which pointed at a totally invalid endpoint
Copy code
{
  "name": "Lucee  CF Engine",
  "version": "7.0.0-SNAPSHOT+165",
  "createPackageDirectory": false,
  "slug": "lucee",
  "shortDescription": "Lucee  WAR engine for CommandBox servers.",
  "type": "cf-engines",
  "JakartaEE": true
}
b
that's fine, the
location
key in that file isn't really used for anything
z
@bdw429s time for a Lucee 7 provider for cfconfig! https://ortussolutions.atlassian.net/browse/CFCONFIG-65
@bdw429s short of unistalling cfconfig, how do i disable it for testing lucee 7 packaging?
b
don't get it anything to import, lol
it only attempts to import if you ask it to
but uninstalling is as simple as
Copy code
uninstall commandbox-cfconfig --system
then put it back when you're done
Copy code
install commandbox-cfconfig
z
ok, i dind't think i was importing anything TBH, just used
box server start cfengine=lucee@be
b
the console output should tell you what it's importing
could be an env var
z
ahh yes
cheers
Copy code
[INFO ] Runwar:   Found WEB-INF: 'd:\work\commandBox\server\BDC98F9C596D664716E7FACAD00B59C4-cb7\lucee-7.0.0-SNAPSHOT.168\WEB-INF'
[ERROR] Exception in thread "main"
[ERROR] java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
[ERROR]         at java.base/java.lang.ClassLoader.defineClass1(Native Method)
[ERROR]         at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
[ERROR]         at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
[ERROR]         at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
[ERROR]         at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
[ERROR]         at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
[ERROR]         at java.base/java.security.AccessController.doPrivileged(AccessController.java:714)
[ERROR]         at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
[ERROR]         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
[ERROR]         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
[ERROR]         at java.base/java.lang.ClassLoader.defineClass1(Native Method)
[ERROR]         at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
[ERROR]         at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
[ERROR]         at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
[ERROR]         at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
[ERROR]         at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
[ERROR]         at java.base/java.security.AccessController.doPrivileged(AccessController.java:714)
[ERROR]         at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
[ERROR]         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
[ERROR]         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
[ERROR]         at java.base/java.lang.ClassLoader.defineClass1(Native Method)
[ERROR]         at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1027)
[ERROR]         at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
[ERROR]         at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
[ERROR]         at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
[ERROR]         at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
[ERROR]         at java.base/java.security.AccessController.doPrivileged(AccessController.java:714)
[ERROR]         at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
[ERROR]         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
[ERROR]         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
[ERROR]         at runwar.undertow.WebXMLParser.lambda$parseWebXml$3(WebXMLParser.java:109)
[ERROR]         at org.joox.Impl.each(Impl.java:407)
[ERROR]         at org.joox.Impl.each(Impl.java:79)
[ERROR]         at runwar.undertow.WebXMLParser.parseWebXml(WebXMLParser.java:102)
[ERROR]         at runwar.RunwarConfigurer.configureServerWar(RunwarConfigurer.java:129)
[ERROR]         at runwar.RunwarConfigurer.configureServerResourceHandler(RunwarConfigurer.java:88)
[ERROR]         at runwar.Server.startServer(Server.java:333)
[ERROR]         at runwar.Start.main(Start.java:44)
[ERROR] Caused by: java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet
[ERROR]         at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
[ERROR]         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:593)
[ERROR]         at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
[ERROR]         ... 38 more
[INFO ] Runwar: Stopping server 'cb7'
[ERROR] java.lang.NullPointerException: Cannot invoke "runwar.undertow.SiteDeploymentManager.getDeployments()" because "runwar.Server.siteDeploymentManager" is null
[ERROR]         at runwar.Server.stopServer(Server.java:550)
[ERROR]         at runwar.Server$2.run(Server.java:511)
[ERROR] Runwar: *** unknown server error
java.lang.NullPointerException: Cannot invoke "runwar.undertow.SiteDeploymentManager.getDeployments()" because "runwar.Server.siteDeploymentManager" is null
        at runwar.Server.stopServer(Server.java:550) [runwar-jakarta-6.0.0.jar:6.0.0]
        at runwar.Server$2.run(Server.java:511) [runwar-jakarta-6.0.0.jar:6.0.0]
[DEBUG] Ignoring Servlet Service [javax.servlet.Servlet], alias is missing or empty
b
it's not picking up the jakarta
look up at the stop of the server start, it should show the command line used to start the server
which will include the path to the runwar.jar
in CommandBox 6.2, the runwar jars will either be named "runwar-legacy" or "runwar-jakarta"
box.json looks correct
z
Copy code
| Server start command:
   |     C:\Program Files\Eclipse Adoptium\jdk-21.0.6.7-hotspot\bin\java.exe
   |     -javaagent:d:/work/commandBox/server/BDC98F9C596D664716E7FACAD00B59C4-cb7/lucee-7.0.0-SNAPSHOT.168/fusionreactor/fusionreactor.jar=name=cb7,address=127.0.0.1:52188,external=false
   |     -Dfr.application.name=cb7
   |     -Dfr.ed.ds.enable=false
   |     -Dfr.chat.enabled=true
   |     -agentpath:d:/work/commandBox/server/BDC98F9C596D664716E7FACAD00B59C4-cb7/lucee-7.0.0-SNAPSHOT.168/fusionreactor/frjvmti_x64.dll
   |     -cp D:\work\commandBox\cfml\libExt\runwar-jakarta-6.0.0.jar runwar.Start d:/work/commandBox/server/BDC98F9C596D664716E7FACAD00B59C4-cb7/lucee-7.0.0-SNAPSHOT.168/serverInfo.json
b
yep, that's jakarta. (turns out, it's at the bottom of the first error as well)
The error came while loading the servlet class
So I'm guessing the actual CFMLServlet class in Lucee is still referencing javax
yeah, the Lucee source code is still littered with javax imports!
That's not gonna work
Those classes are gone!
The new CFMLServlet class in Lucee 7 still has stuff like
Copy code
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
Micha has to find/replace all that stuff to be the jakarta namespace
And update any classes which have now been removed or modified in the latest servlet specs
For what it's worth, CommandBox/Runwar is still using jarkarta 5.0, not 6.0 because Adobe CF 2025 drug their feet and are still on Jakarta 5.0 (and don't work on 6.0!)
z
ah let me check, that should have been renamed
b
Micha actually extended the javax CFMLServlet class as well
He may be trying to still support both, but that's nearly impossible
you've got to make a clean break
z
i know the problem, easy fix
the old support was in there for commandbox compat unitl you had jakarta support! I'll add a new template for 7.0
👍 1
b
Cool. Hopefully after this, it's all Jakarta, no looking back!
The Jakarta group has gotten more brave and are actually removing and refactoring stuff now. (the javax spec basically was backwards compat for many, many years)
we even have integration tests these days
ok, next snapshot should work
image.png