6

我下载了 Javax.mail 包。我有 jdk1.6.0_11。问题是......我无法让 javac 或 java 找到这些类!我可以使用 JCreator LE 编译应用程序(通过将邮件 jar 添加到其搜索列表)但是,当我尝试在命令窗口中运行应用程序时,它会失败。

我可以将这些新类添加到 rt.jar 而不损害我的 jdk 安装吗?我知道java已经连接到那里寻找类。(而且,邮件类位于 javax 包中 - 似乎可以将它们合理地添加到 rt.jar 中的 javax 文件夹中。

谢谢!菲尔·D'

4

5 回答 5

3

不,你不能,也不应该。

相反,找出你的类加载器的问题(可能是路径?)。您将需要它来访问您需要访问的下一个库。

弄乱 rt.jar 意味着你不能在任何其他 JVM 上运行。

于 2009-04-12T19:18:57.257 回答
2

您应该在类路径中指定 jar 文件:最好在命令行中使用该-cp选项,但也可以使用CLASSPATH环境变量。

或者,您可以在系统属性中指定其目录。java.ext.dirs有关更多详细信息,请参阅扩展机制的文档

你不应该胡闹rt.jar。这绝对不是让额外的 jar 文件可用的方法——它类似于尝试将 Microsoft Word 添加到 Windows 内核;)

于 2009-04-12T19:30:33.000 回答
1

向 rt.jar 添加东西似乎是个坏主意,尽管它可能而且很容易完成。

尝试从命令行编译您的应用程序,如下所示:

javac -cp <path_to_3rd_libs>/jarfile.jar . MainClass.java

如果编译器仍然抱怨 javax.mail 包,请尝试解压缩/检查 jar 文件以查看 javax.mail 包(及其预期内容)是否存在。

(在 Windows 上,使用 7zip 很容易检查 jar 文件。)

于 2009-04-12T19:53:16.673 回答
0

绝对没有。如果您从命令行发布您正在运行的命令,我们将能够为您指出正确的方向,但很可能您只是缺少一个类路径参数。

java -classpath /path/to/mail.jar MyClass

于 2009-04-12T19:39:24.040 回答
0

您需要了解 CLASSPATH 概念,它允许您将单个类和包含类的 jar 文件添加到可用于要编译和/或运行的代码的已定义类的“宇宙”中。它在思想上类似于 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 都应该知道这些类

于 2009-04-12T23:30:56.557 回答