【问题标题】:Include jar file in source code and during compile在源代码中和编译期间包含 jar 文件
【发布时间】:2012-10-24 01:05:24
【问题描述】:

我已经制作了我的自定义 jar 文件并使用它编译它

path C:\Program Files\Java\jdk1.7.0_04\bin;%path%
javac *.java
jar cvf QLibrary.jar *.class

然后我把那个 jar 文件放在我的Main.java 所在的同一目录中

Main.java 将使用 jar 中的类

所以我决定将import QLibrary.*; 放入Main.java

我编译使用

path C:\Program Files\Java\jdk1.7.0_04\bin;%path%
javac -cp ".;*.jar" *java

但显然它不识别库或其中的类。我到底做错了什么?

【问题讨论】:

    标签: jar classpath javac java


    【解决方案1】:

    您应该列出所有 jar 文件的名称:

    javac -cp ".;QLibrary.jar" *java
    

    或者你可以这样使用通配符:

    javac -cp ".;*" *java
    

    类路径条目可以包含基本名称通配符*,这相当于指定目录中所有文件的列表,扩展名为.jar.JAR。例如,类路径条目foo/* 指定名为 foo 的目录中的所有 JAR 文件。仅由 * 组成的类路径条目将扩展为当前目录中所有 jar 文件的列表。 ...例如,如果目录foo 包含a.jarb.jarc.jar,则类路径foo/* 将扩展为foo/a.jar;foo/b.jar;foo/c.jar

    http://docs.oracle.com/javase/6/docs/technotes/tools/windows/classpath.html

    【讨论】:

    • 应该是./* 而不是lib/*
    • 是的!如果 jar 文件位于当前目录中,则指定 ./* 将被扩展,例如扩展到 ./a.jar;./b.jar;...,它应该可以工作。
    • 谢谢。你能调整你的答案吗?如何将".;QLibrary.jar" 替换为".;lib/*" 可能会令人困惑。
    【解决方案2】:

    javac -cp option 中所述,如果您使用的是Windows,请尝试java -cp .;QLibrary.jar mysource

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      相关资源
      最近更新 更多