softwareCobbler / luceedebug

line debugger for lucee
GNU Lesser General Public License v2.1
44 stars 15 forks source link

Lucee 5.4.1.8 Issue: java.lang.NoClassDefFoundError: com/sun/jdi/Bootstrap #43

Closed jamiejackson closed 1 year ago

jamiejackson commented 1 year ago

Lucee 5.4.1.8 just dropped. I'm trying it out but I had issues right away with server startup.

I haven't dug into this at all yet.

FYI, this is with the Lucee docker image (5.4.1.8-light).

07-Jul-2023 16:24:55.049 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             /opt/java/openjdk
07-Jul-2023 16:24:55.049 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:           11.0.19+7
07-Jul-2023 16:24:55.049 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:            Eclipse Adoptium
07-Jul-2023 16:24:55.049 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:         /usr/local/tomcat
07-Jul-2023 16:24:55.049 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:         /usr/local/tomcat
07-Jul-2023 16:24:55.089 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
07-Jul-2023 16:24:55.092 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
07-Jul-2023 16:24:55.092 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms512m
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx4096m
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.security.egd=file:/dev/./urandom
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=localhost:9999
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -javaagent:/app/lib/luceedebug/luceedebug.jar=jdwpHost=localhost,jdwpPort=9999,cfHost=0.0.0.0,cfPort=10000,jarPath=/app/lib/luceedebug/luceedebug.jar
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
07-Jul-2023 16:24:55.093 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
07-Jul-2023 16:24:55.094 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
07-Jul-2023 16:24:55.094 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
07-Jul-2023 16:24:55.094 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
07-Jul-2023 16:24:55.094 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
07-Jul-2023 16:24:55.094 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
07-Jul-2023 16:24:55.120 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.37] using APR version [1.7.0].
07-Jul-2023 16:24:55.122 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [true].
07-Jul-2023 16:24:55.122 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
07-Jul-2023 16:24:55.134 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.2 15 Mar 2022]
07-Jul-2023 16:24:55.814 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8888"]
07-Jul-2023 16:24:55.920 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [1507] milliseconds
07-Jul-2023 16:24:56.020 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
07-Jul-2023 16:24:56.021 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.76]
[luceedebug] Loaded luceedebug.coreinject.DebugManager@784c5ef5 with ClassLoader 'lucee.core [41]'
[luceedebug] attempting jdwp self connect to jdwp on localhost:9999...
java.lang.NoClassDefFoundError: com/sun/jdi/Bootstrap
     at luceedebug.coreinject.DebugManager.getConnector(DebugManager.java:81)
     at luceedebug.coreinject.DebugManager.jdwpSelfConnect(DebugManager.java:94)
     at luceedebug.coreinject.DebugManager.spawnWorker(DebugManager.java:71)
     at luceedebug.LuceeTransformer.transform(LuceeTransformer.java:108)
     at java.instrument/java.lang.instrument.ClassFileTransformer.transform(Unknown Source)
     at java.instrument/sun.instrument.TransformerManager.transform(Unknown Source)
     at java.instrument/sun.instrument.InstrumentationImpl.transform(Unknown Source)
     at java.base/java.lang.ClassLoader.defineClass1(Native Method)
     at java.base/java.lang.ClassLoader.defineClass(Unknown Source)
     at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2338)
     at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClassParallel(BundleWiringImpl.java:2156)
     at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2090)
     at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1556)
     at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
     at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
     at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
     at java.base/java.lang.Class.privateGetDeclaredMethods(Unknown Source)
     at java.base/java.lang.Class.getMethodsRecursive(Unknown Source)
     at java.base/java.lang.Class.getMethod0(Unknown Source)
     at java.base/java.lang.Class.getMethod(Unknown Source)
     at lucee.loader.engine.CFMLEngineFactory.getEngine(CFMLEngineFactory.java:1468)
     at lucee.loader.engine.CFMLEngineFactory.initEngine(CFMLEngineFactory.java:384)
     at lucee.loader.engine.CFMLEngineFactory.initEngineIfNecessary(CFMLEngineFactory.java:262)
     at lucee.loader.engine.CFMLEngineFactory.getInstance(CFMLEngineFactory.java:168)
     at lucee.loader.engine.CFMLEngineFactory.getInstance(CFMLEngineFactory.java:202)
     at lucee.loader.servlet.CFMLServlet.init(CFMLServlet.java:42)
     at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1106)
     at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1063)
     at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:960)
     at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4673)
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4980)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1328)
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1318)
     at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
     at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
     at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
     at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:795)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1328)
     at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1318)
     at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
     at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
     at java.base/java.util.concurrent.AbstractExecutorService.submit(Unknown Source)
     at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:866)
     at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:249)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at org.apache.catalina.core.StandardService.startInternal(StandardService.java:428)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:923)
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
     at org.apache.catalina.startup.Catalina.start(Catalina.java:772)
     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
     at java.base/java.lang.reflect.Method.invoke(Unknown Source)
     at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347)
     at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478)
Caused by: java.lang.ClassNotFoundException: com.sun.jdi.Bootstrap not found by lucee.core [41]
     at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1591)
     at org.apache.felix.framework.BundleWiringImpl.access$300(BundleWiringImpl.java:79)
     at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1976)
     at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
     ... 60 more
softwareCobbler commented 1 year ago

Are you running a JDK? That's usually the culprit for this (java.lang.NoClassDefFoundError: com/sun/jdi/Bootstrap).

jamiejackson commented 1 year ago

Looks like the newer one ships with a JRE, while the older one has a JDK. Seems like a big change and I wonder if it was deliberate or not.

Lucee 5.4.0.80-light

$ docker run --rm -it lucee/lucee:5.4.0.80-light java -version
openjdk version "11.0.16" 2022-07-19
OpenJDK Runtime Environment 18.9 (build 11.0.16+8)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.16+8, mixed mode, sharing)

$ docker run --rm -it lucee/lucee:5.4.0.80-light javac -version
javac 11.0.16

Lucee 5.4.1.8-light

$ docker run --rm -it lucee/lucee:5.4.1.8-light java -version
openjdk version "11.0.19" 2023-04-18
OpenJDK Runtime Environment Temurin-11.0.19+7 (build 11.0.19+7)
OpenJDK 64-Bit Server VM Temurin-11.0.19+7 (build 11.0.19+7, mixed mode, sharing)

$ docker run --rm -it lucee/lucee:5.4.1.8-light javac -version
docker: Error response from daemon: OCI runtime create failed: runc create failed: unable to start container process: exec: "javac": executable file not found in $PATH: unknown.
jamiejackson commented 1 year ago

JDK-based images have been worked into Lucee's build matrix.