我正在尝试使用名为hello的包中包含的作为jar文件提供的项目(称为Hello.jar)的公共方法/分类。在Java项目中使用jar吗?
package hello;
public class Hello
{
public static void main(String[] args)
{
coucou();
}
public static void coucou()
{
System.out.println("Hello there");
}
}
在被称为工具一个独立的项目,我希望能够调用的方法Hello.coucou()
所以我写了这样的事情:
import hello.*;
public class Tool
{
public static void main(String[] args)
{
System.out.println("main program running");
Hello.coucou();
}
}
和我编译Tool.java使用下面的命令(下的Linux):
$ javac Tool.java -classpath .:./extern/:
其中Hello.jar所在的文件夹中./extern
这似乎编译得很好,但是当我启动它时(即的Java工具),我得到这个:
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
我是新来的Java(C/C++背景),我不明白我在做什么错。 任何想法?
干杯 大卫
编辑:我尝试添加Hello.jar在命令行上的类路径,但我仍然得到同样的错误:
$ 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
我希望分号分隔类路径而不是分号。 – Tom 2009-06-09 20:18:18
Windows:分号Linux:冒号 – dm76 2009-06-10 08:50:02