向lib / ext添加jar有没有限制?

时间:2016-02-28 05:52:09

标签: java jar

我尝试将以下广告添加到$java/jre/lib/ext$java/jdk/jre/lib/ext

  • 公地-CSV-1.2.jar
  • 的junit.jar
  • hamcrest-cor.jar

如果我从任何jar导入类/库并尝试使用命令javac ClassName.java进行编译,它总是返回包[path | name]不存在。

我不知道导致这个问题的原因,任何想法?

1 个答案:

答案 0 :(得分:1)

Java编译器从Java源代码(.class)生成Java字节码(.java文件)。因为它正在编译一个类,例如ClassName.java,如果该类import是任何其他类,例如import pkg.SomeClass,它执行类似这样的操作(详情here):

  1. 从源代码编译该类(例如pkg/SomeClass.java)或
  2. 期望该类的字节码(例如pkg/SomeClass.class) to be available on the classpath`(在文件夹或jar中)。
  3. 由于您依赖某些其他罐子的班级,您希望javac采取上述第二条路线。一种相当简单的方法是使用classpathjavac -cp <path/to/jar>javac -classpath <path/to/jar>上指定jar文件(您知道导入的类存在的位置)。

    JRE extension mechanism与扩展Java运行时环境有关。虽然javac可能会参考JRE安装上的extensions目录,但似乎最好远离它。