Note that there are some explanatory texts on larger screens.

plurals
  1. POUsing a jar in a Java project?
    text
    copied!<p>I'm trying to use the public methods/classed from a project provided as a jar file (called Hello.jar for instance) wrapped in a package called hello.</p> <pre><code>package hello; public class Hello { public static void main(String[] args) { coucou(); } public static void coucou() { System.out.println("Hello there"); } } </code></pre> <p>In a separate project called Tool, I want to be able to call the method <code>Hello.coucou()</code> so I wrote something like this:</p> <pre><code>import hello.*; public class Tool { public static void main(String[] args) { System.out.println("main program running"); Hello.coucou(); } } </code></pre> <p>and I compiled Tool.java with the following command (under linux):</p> <pre><code>$ javac Tool.java -classpath .:./extern/: </code></pre> <p>where Hello.jar is located in the folder <code>./extern</code></p> <p>This seems to compile fine but when I launch it (i.e. java Tool), I get this:</p> <pre><code>main program running Exception in thread "main" java.lang.NoClassDefFoundError: hello/Hello at Tool.main(Tool.java:9) Caused by: java.lang.ClassNotFoundException: hello.Hello at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:323) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:268) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336) ... 1 more </code></pre> <p>I am new to Java (C/C++ background) and I don't understand what I'm doing wrong. Any ideas?</p> <p>Cheers David</p> <hr> <p><strong>Edit:</strong> I tried adding Hello.jar to the classpath on the command line, but I still get the same error:</p> <pre><code>$ javac Tool.java -classpath .:./extern/Hello.jar: $ java Tool -classpath .:./extern/Hello.jar: main program running Exception in thread "main" java.lang.NoClassDefFoundError: hello/Hello at Tool.main(Tool.java:9) Caused by: java.lang.ClassNotFoundException: hello.Hello at java.net.URLClassLoader$1.run(URLClassLoader.java:217) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:205) at java.lang.ClassLoader.loadClass(ClassLoader.java:323) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) at java.lang.ClassLoader.loadClass(ClassLoader.java:268) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:336) ... 1 more </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload