【问题标题】:Java import external jar fileJava导入外部jar文件
【发布时间】:2014-09-03 23:10:42
【问题描述】:

假设我在 ~/jar/ 中有 TryJar.java

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 more

2.

我尝试在我的 .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.java

Jar 的结构:

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)

【问题讨论】:

标签: java jar import classpath


【解决方案1】:

它在编译时失败。尝试先在 TrySrc.java 中导入“TryJar”。

【讨论】:

    【解决方案2】:

    以你的方式1:

    尝试改变

    java -cp ~/jar/TryJar.jar TrySrc
    

    java -cp .:~/jar/TryJar.jar TrySrc
    

    在类路径中包含当前目录以及能够加载TrySrc

    【讨论】:

    • 我试过你的方法,但同样的错误“线程“主”java.lang.NoClassDefFoundError:TryJar at TrySrc.main(TrySrc.java:3) 中的异常”
    • 能不能把jar的目录结构贴一下
    • 我已经更新了结构,基本上这个项目的整个创建都是上面提到的,这是最简单的情况,我相信我犯了一些愚蠢的错误,我不知道它在哪里.. .
    • 我的意思是 jar 的结构
    • 将此行放入main 的第一个语句System.out.println(System.getProperty("java.class.path")); 的方法中并发布输出还确保所有文件/目录都存在,该文件/目录与您调用@的目录相关987654326@命令
    猜你喜欢
    • 2011-05-24
    • 1970-01-01
    • 2013-07-19
    • 2020-05-18
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 2013-06-08
    • 2020-06-29
    相关资源
    最近更新 更多