我尝试将以下广告添加到$java/jre/lib/ext
和$java/jdk/jre/lib/ext
:
如果我从任何jar导入类/库并尝试使用命令javac ClassName.java
进行编译,它总是返回包[path | name]不存在。
我不知道导致这个问题的原因,任何想法?
答案 0 :(得分:1)
Java编译器从Java源代码(.class
)生成Java字节码(.java
文件)。因为它正在编译一个类,例如ClassName.java
,如果该类import
是任何其他类,例如import pkg.SomeClass
,它执行类似这样的操作(详情here):
pkg/SomeClass.java
)或pkg/SomeClass.class) to be available on the
classpath`(在文件夹或jar中)。由于您依赖某些其他罐子的班级,您希望javac
采取上述第二条路线。一种相当简单的方法是使用classpath
或javac -cp <path/to/jar>
在javac -classpath <path/to/jar>
上指定jar文件(您知道导入的类存在的位置)。
JRE extension mechanism与扩展Java运行时环境有关。虽然javac
可能会参考JRE安装上的extensions目录,但似乎最好远离它。