ARTIFACTORY: How to troubleshoot NoClassDefFound errors?

AuthorFullName__c
Venu Reddy
articleNumber
000005177
FirstPublishedDate
2021-12-13T07:47:47Z
lastModifiedDate
2025-05-15

ARTIFACTORY: How to troubleshoot NoClassDefFound errors?

Description

One may encounter an error such as the following in logs.

2021-07-19T09:22:10.832Z [jfac ] [ERROR] [4f658ce7fcdb7a11] [.s.b.w.s.s.ErrorPageFilter:186] [27.0.0.1-8040-exec-2] - Forwarding to error page from request [/api/v1/registry/join/router] due to exception [org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: java/security/interfaces/RSAPrivateKey]

javax.servlet.ServletException: org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: java/security/interfaces/RSAPrivateKey

 

Resolution

To see how related classes are being loaded into Artifactory’s JVM, one needs to examine Java class logging (which keeps track of class loading and unloading) for further diagnosis.

For Artifactory 7.x:

Add “-verbose:class” to extraJavaOpts in the system.yaml file. For e.g.

extraJavaOpts: "-server -Xms512m -Xmx2g -Xss256k -XX:+UseG1GC -verbose:class" 

Sample entries from console.log:

[4.800s][info][class,load] java.sql.Driver source: jrt:/java.sql

[4.801s][info][class,load] com.mysql.jdbc.NonRegisteringDriver source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/lib/jf_mysql-connector-java-5.1.49.jar

[4.801s][info][class,load] com.mysql.jdbc.Driver source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/lib/jf_mysql-connector-java-5.1.49.jar

[4.801s][info][class,load] java.sql.Connection source: jrt:/java.sql

[4.801s][info][class,load] com.mysql.jdbc.AbandonedConnectionCleanupThread source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/lib/jf_mysql-connector-java-5.1.49.jar

[4.802s][info][class,load] com.mysql.jdbc.AbandonedConnectionCleanupThread$1 source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/lib/jf_mysql-connector-java-5.1.49.jar

[4.815s][info][class,load] com.fasterxml.classmate.TypeResolver source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

[4.815s][info][class,load] com.fasterxml.classmate.ResolvedType source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

[4.816s][info][class,load] com.fasterxml.classmate.types.ResolvedRecursiveType source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

[4.816s][info][class,load] com.fasterxml.classmate.types.ResolvedArrayType source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

[4.816s][info][class,load] com.fasterxml.classmate.types.ResolvedInterfaceType source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

[4.817s][info][class,load] com.fasterxml.classmate.types.ResolvedObjectType source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

[4.818s][info][class,load] com.fasterxml.classmate.members.RawMember source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

[4.818s][info][class,load] com.fasterxml.classmate.members.RawConstructor source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

[4.818s][info][class,load] com.fasterxml.classmate.members.RawField source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

[4.818s][info][class,load] com.fasterxml.classmate.members.RawMethod source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

[4.819s][info][class,load] com.fasterxml.classmate.TypeBindings source: file:/opt/jfrog/artifactory/app/artifactory/tomcat/webapps/access/WEB-INF/lib/classmate-1.4.0.jar

 

For Artifactory 6.x:

Modify JAVA_OPTIONS in $ARTIFACTORY_HOME/bin/artifactory.default file or as outlined at: Setting JVM parameters. For e.g.

export JAVA_OPTIONS="-server -Xms512m -Xmx4g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\"kill -9 %p\" -verbose:class"

  Sample entries from catalina.out:
  

[2.139s][info][class,load] java.sql.Driver source: jrt:/java.sql

[2.139s][info][class,load] org.apache.derby.jdbc.EmbeddedDriver source: file:/Users/venur/dev/art-rel/artifactory-pro-6.23.21/tomcat/lib/derby-10.14.2.0.jar

[2.139s][info][class,load] java.sql.SQLNonTransientException source: jrt:/java.sql

[2.139s][info][class,load] java.sql.SQLFeatureNotSupportedException source: jrt:/java.sql

[2.140s][info][class,load] org.springframework.format.datetime.joda.YearMonthFormatter source: file:/Users/venur/dev/art-rel/artifactory-pro-6.23.21/tomcat/webapps/access/WEB-INF/lib/spring-context-5.1.15.RELEASE.jar

[2.140s][info][class,load] java.sql.DriverManager source: jrt:/java.sql

[2.140s][info][class,load] java.sql.SQLPermission source: jrt:/java.sql

[2.141s][info][class,load] org.apache.derby.iapi.jdbc.JDBCBoot source: file:/Users/venur/dev/art-rel/artifactory-pro-6.23.21/tomcat/lib/derby-10.14.2.0.jar

[2.141s][info][class,load] org.joda.time.MonthDay source: file:/Users/venur/dev/art-rel/artifactory-pro-6.23.21/tomcat/webapps/access/WEB-INF/lib/joda-time-2.9.7.jar

[2.141s][info][class,load] org.springframework.format.datetime.joda.MonthDayFormatter source: file:/Users/venur/dev/art-rel/artifactory-pro-6.23.21/tomcat/webapps/access/WEB-INF/lib/spring-context-5.1.15.RELEASE.jar

[2.142s][info][class,load] org.apache.derby.iapi.services.monitor.ModuleControl source: file:/Users/venur/dev/art-rel/artifactory-pro-6.23.21/tomcat/lib/derby-10.14.2.0.jar

[2.142s][info][class,load] org.springframework.format.datetime.joda.JodaDateTimeFormatAnnotationFormatterFactory source: file:/Users/venur/dev/art-rel/artifactory-pro-6.23.21/tomcat/webapps/access/WEB-INF/lib/spring-context-5.1.15.RELEASE.jar

[2.142s][info][class,load] org.apache.derby.jdbc.InternalDriver source: file:/Users/venur/dev/art-rel/artifactory-pro-6.23.21/tomcat/lib/derby-10.14.2.0.jar

[2.143s][info][class,load] org.apache.derby.iapi.services.io.TypedFormat source: file:/Users/venur/dev/art-rel/artifactory-pro-6.23.21/tomcat/lib/derby-10.14.2.0.jar
  • If nothing is being loaded from the expected location of the class, take a look at Java CLASSPATH and make sure it’s part of it.
  • If some classes are being loaded from that location, it could be that another JAR file that contains that class is missing. Check Javadocs for the class in question.


Note: Once the problem is resolved, turn off the verbose logging as it can affect the application’s performance.