Skip to content

cannot link Java class com.util (java.lang.NoClassDefFoundError: com/util (wrong name: com/Util)) #4861

@javalovercn

Description

@javalovercn
  1. new Eclipse Java project, and add a class named 'SecondUtil.java' in package 'com.util'
package com.util;

public class SecondUtil {
	public SecondUtil(){
		System.out.println("SecondUtil");
	}
}
  1. add a class named 'TestMain.java' in package 'com'
package com;

import org.jruby.embed.ScriptingContainer;

public class TestMain {
	public static void main(final String[] args) {
		final ScriptingContainer sc = new ScriptingContainer();
		sc.runScriptlet("Java::com.util.SecondUtil::new()");
	}
}
  1. import lib jruby-complete-9.1.14.0.jar
  2. run TestMain, console prints 'SecondUtil', all is OK.
  3. add a class 'Util.java' in package 'com' to current project
package com;

public class Util {
	public Util(){
		System.out.println("this is Util.");
	}
}
  1. run TestMain, console prints following error:
NameError: cannot link Java class com.util (java.lang.NoClassDefFoundError: com/util (wrong name: com/Util))
  method_missing at org/jruby/javasupport/JavaPackage.java:259
          <main> at <script>:1
Exception in thread "main" org.jruby.embed.EvalFailedException: (NameError) cannot link Java class com.util (java.lang.NoClassDefFoundError: com/util (wrong name: com/Util))
	at org.jruby.embed.internal.EmbedEvalUnitImpl.run(EmbedEvalUnitImpl.java:131)
	at org.jruby.embed.ScriptingContainer.runUnit(ScriptingContainer.java:1307)
	at org.jruby.embed.ScriptingContainer.runScriptlet(ScriptingContainer.java:1300)
	at com.TestMain.main(TestMain.java:8)
Caused by: org.jruby.exceptions.RaiseException: (NameError) cannot link Java class com.util (java.lang.NoClassDefFoundError: com/util (wrong name: com/Util))
	at org.jruby.javasupport.JavaPackage.method_missing(org/jruby/javasupport/JavaPackage.java:259)
	at RUBY.<main>(<script>:1)
  1. change jruby-complete-9.1.14.0.jar to jruby-complete-1.7.3.jar
  2. run TestMain, it works well.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions