【发布时间】:2010-11-01 12:56:42
【问题描述】:
我正在尝试使用作为 jar 文件(例如称为 Hello.jar)的项目提供的公共方法/分类,该文件包含在名为 hello 的包中。
package hello;
public class Hello
{
public static void main(String[] args)
{
coucou();
}
public static void coucou()
{
System.out.println("Hello there");
}
}
在一个名为 Tool 的单独项目中,我希望能够调用方法 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
【问题讨论】:
-
我希望用分号而不是冒号分隔类路径。
-
Windows:分号 Linux:冒号
标签: java linux command-line jar