我下载了Javax.mail包。我有jdk1.6.0_11。 问题是......我无法让javac或java找到那些类! 我可以使用JCreator LE(通过添加邮件jar)来编译应用程序 到它的搜索列表)但是,当我尝试在命令窗口中运行应用程序时, 它失败了。
我可以在没有的情况下将这些新类添加到rt.jar中 伤害我的jdk安装? 我知道java已将它连接到那里寻找类。 (并且,邮件类在javax包中 - 看起来像 它们可以合理地添加到rt.jar中的javax文件夹中。
谢谢! Phil D'
答案 0 :(得分:3)
不,你不能,也不应该。
相反,找出你的类加载器的问题(可能是路径?)。您需要访问下一个库。
使用rt.jar进行混乱意味着您无法在任何其他JVM上运行。
答案 1 :(得分:2)
您应该在类路径中指定jar文件:最好在命令行中使用-cp
选项,但可能使用CLASSPATH
环境变量。
或者,您可以在java.ext.dirs
系统属性中指定其目录。有关详细信息,请参阅documentation for the extensions mechanism。
你不应该惹恼rt.jar
。这绝对是不提供额外jar文件的方式 - 它类似于尝试将Microsoft Word添加到Windows内核;)
答案 2 :(得分:1)
向rt.jar添加内容似乎是一个坏主意,尽管它可能且易于实现。
尝试从命令行编译应用程序,如下所示:
javac -cp <path_to_3rd_libs>/jarfile.jar . MainClass.java
如果编译器仍然抱怨javax.mail包,请尝试解压缩/检查jar文件以查看javax.mail包(及其预期内容)是否存在。
(在Windows上,使用7zip很容易检查一个jar文件。)
答案 3 :(得分:0)
绝对没有。 如果从命令行发布正在运行的命令,我们将能够指向正确的方向,但很可能您只是缺少类路径参数。
java -classpath /path/to/mail.jar MyClass
答案 4 :(得分:0)
您需要了解CLASSPATH概念,该概念允许您将包含类的单个类和jar文件添加到可用于要编译和/或运行的代码的已定义类的“Universe”中。它在思想上类似于Windows世界中的PATH变量。
对于Windows命令行,这是文档:
http://java.sun.com/javase/6/docs/technotes/tools/windows/classpath.html
Java Tutorial让我感到惊讶的是,我没有为这个特定的概念写得很好:
http://java.sun.com/docs/books/tutorial/essential/environment/paths.html
你很可能需要一些东西:
C:&GT;设置CLASSPATH = c:\ javamail \ first.jar; c:\ javamail \ second.jar
之后java和javac都应该知道这些类