我可以向sun的rt.jar文件添加类吗?

问题描述:

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

我可以添加这些新类到rt.jar没有 伤害我的JDK安装? 我知道java有它连接起来寻找类。 (而且,邮件类是使用javax包内 - !好像 他们可以合理地添加到rt.jar中使用javax文件夹..

感谢 菲尔d”

+3

为什么这下投票? – 2009-04-12 19:29:57

+0

由于黑客攻击JDK绝不是一个好的实践,相反,您可以在不损害开发环境的情况下破解JRE – 2009-04-12 19:45:18

+3

因此,将其放入答案中。这并不意味着这是一个不好的问题。 – 2009-04-12 21:39:02

不,你不能,也不应该你。

相反,找出问题与你的类加载器(可能的路径?)。你需要为你需要访问的下一个图书馆。

与梅辛的rt.jar意味着你可以不会在任何其他JVM上运行。

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

或者,您可以在java.ext.dirs系统属性中指定其目录。有关更多详细信息,请参阅documentation for the extensions mechanism

你不应该搞rt.jar。这是非常肯定的而不是的方式来提供额外的jar文件 - 这是类似于试图将微软的Word添加到Windows内核;)

+0

你的第二个建议点击我!我宁愿用一些永久的方式注册 这个jar,而不是必须将它指定为 作为-classpath选项的一部分。谢谢!菲尔 – javaphild 2009-04-12 21:07:22

+0

顺便说一句...我把javamail .jar放在java.ext目录中, ,它工作得很完美。一个非常简单有效的解决方 我的ext目录是c:\ program files \ java \ jdk1.6.0_11 \ jre \ lib \ ext – javaphild 2009-04-24 19:14:59

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

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

添加东西的rt.jar似乎是一个坏主意,即使它可能并容易实现。

尝试从这样的命令行编译应用程序:

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

如果编译器还埋怨javax.mail包试图解开/检查jar文件看到javax.mail包(和其预期内容)在那里。

(在Windows上它很容易使用7zip的检查一个jar文件。)

+0

>(在windows上它很容易检查使用7zip的jar文件。) 使用任何可以浏览zip文件在任何平台上,它都不是7zip的功能。 – Fredrik 2009-04-12 20:31:43

+0

gah,忘记了关于stackoverflow忽略换行符的评论......对不起。 – Fredrik 2009-04-12 20:32:38

您需要了解的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:> set CLASSPATH = c: \ JavaMail的\ first.jar; C:\ JavaMail的\ second.jar

之后,java和javac的应该知道这些类