假设我在~/ TryJar.java /中有jar
public class TryJar {
public static void hello() {
System.out.println("Hello World!");
}
}然后我输入:
javac TryJar.java
jar cf TryJar.jar TryJar.class我想在~/src/中的另一个源文件中导入这个类:
public class TrySrc {
public static void main(String[] args) {
TryJar.hello();
}
}我尝试了两种方法:
1.
javac -cp ~/jar/TryJar.jar TrySrc.java它在编译过程中是正常的,但是当我尝试运行它时,出现了错误:
java -cp .:~/jar/TryJar.jar TrySrc
Exception in thread "main" java.lang.NoClassDefFoundError: TryJar
at TrySrc.main(TrySrc.java:3)
Caused by: java.lang.ClassNotFoundException: TryJar
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 1 more2.
我尝试在我的.bashrc和.profile中包含以下命令(我没有.bash_profile或.bash_login):
export CLASSPATH=$CLASSPATH:~/jar/TryJar.jar和:
source .bashrc
source .profile但这一次,它仍然是错误的:
javac TrySrc.java
TrySrc.java:3: error: cannot find symbol
TryJar.hello();
^
symbol: variable TryJar
location: class TrySrc我应该怎么做才能包含外部jar文件?
编辑:整个项目只包含两个目录:
~/jar/:
TryJar.java
TryJar.class
TryJar.jar
~/src/:
TrySrc.javaJar的结构:
jar tf TryJar.jar
META-INF/
META-INF/MANIFEST.MF
TryJar.class我的系统是Ubuntu 12.04,java版本:
java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)发布于 2014-07-14 12:51:15
以你的方式1:
尝试从
java -cp ~/jar/TryJar.jar TrySrc至
java -cp .:~/jar/TryJar.jar TrySrc在类路径中包含当前目录,以便能够加载TrySrc
发布于 2014-07-14 15:04:27
它在编译时失败。尝试先在TrySrc.java中导入"TryJar“。
https://stackoverflow.com/questions/24729693
复制相似问题