![](/img/trans.png)
[英]Why can't I find the API documentation for com.sun.* classes in rt.jar?
[英]Can I add classes to sun's rt.jar file?
我下载了Javax.mail软件包。 我有jdk1.6.0_11。 问题是...我无法让javac或java找到那些类! 我可以使用JCreator LE(将邮件罐添加到其搜索列表中)来编译应用程序,但是,当我尝试在命令窗口中运行该应用程序时,它会失败。
我可以在不损害jdk安装的情况下将这些新类添加到rt.jar吗? 我知道java已将其连接起来以在那里查找类。 (而且,邮件类在javax包中-似乎可以将它们合理地添加到rt.jar中的javax文件夹中。
谢谢! 菲尔·达德
不,你不能,你也不应该。
相反,找出类加载器的问题(可能是路径?)。 对于下一个需要访问的库,您将需要它。
rt.jar的混乱意味着您不能在任何其他JVM上运行。
向rt.jar添加内容似乎是个坏主意,即使它可能且容易实现。
尝试从命令行编译您的应用程序,如下所示:
javac -cp <path_to_3rd_libs>/jarfile.jar . MainClass.java
如果编译器仍然抱怨javax.mail软件包,请尝试解压缩/检查jar文件,以查看是否存在javax.mail软件包(及其预期的内容)。
(在Windows上,使用7zip可以轻松检查jar文件。)
绝对没有。 如果您从命令行运行您正在运行的命令,我们将为您指明正确的方向,但是很可能您只是缺少一个classpath参数。
java -classpath /path/to/mail.jar MyClass
您需要了解CLASSPATH概念,该概念允许您将单独的类和包含类的jar文件添加到已定义类的“ Universe”中,这些“类”可用于要编译和/或运行的代码。 它的概念类似于Windows世界中的PATH变量。
对于Windows命令行,这是文档:
http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html
Java教程没有为这个特定概念写得很好,这使我感到惊讶:
http://java.sun.com/docs/books/tutorial/essential/environment/paths.html
您很可能需要以下内容:
C:>设置CLASSPATH = c:\\ javamail \\ first.jar; c:\\ javamail \\ second.jar
之后,java和javac都应该知道这些类
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.