Могу ли я добавить классы в файл Sun rt.jar? - PullRequest
5 голосов
/ 12 апреля 2009

Я скачал пакет Javax.mail. У меня есть jdk1.6.0_11. Проблема в том ... Я не могу получить javac или java, чтобы найти эти классы! Я могу получить приложения для компиляции с помощью JCreator LE (добавив почтовый кувшин к его списку поиска), но, когда я пытаюсь запустить приложение в командном окне, это терпит неудачу.

Могу ли я добавить эти новые классы в rt.jar без вредит моей установке JDK? Я знаю, что в Java есть возможность искать там классы. (И почтовые классы находятся внутри пакета javax - похоже, их разумно добавить в папку javax в rt.jar.

Спасибо! Фил Д '

Ответы [ 5 ]

3 голосов
/ 12 апреля 2009

Нет, ты не можешь и не должен.

Вместо этого выясните проблему с вашим загрузчиком классов (возможно, путями?). Это понадобится вам для следующей библиотеки, к которой вам нужен доступ.

Использование rt.jar означает, что вы не можете работать на любой другой JVM.

2 голосов
/ 12 апреля 2009

Вы должны либо указать файл jar в своем classpath: предпочтительно в командной строке с параметром -cp, но, возможно, с переменной окружения CLASSPATH.

Кроме того, вы можете указать каталог в системном свойстве java.ext.dirs. Подробнее см. Документацию для механизма расширений .

.

Вы не должны возиться с rt.jar. Это определенно не способ сделать дополнительные файлы JAR доступными - это все равно что пытаться добавить Microsoft Word в ядро ​​Windows;)

1 голос
/ 12 апреля 2009

Добавление вещей в rt.jar кажется плохой идеей, хотя это возможно и легко осуществить.

Попробуйте скомпилировать приложение из командной строки следующим образом:

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

Если компилятор все еще жалуется на пакет javax.mail, попробуйте распаковать / проверить файл jar, чтобы увидеть, что пакет javax.mail (и его ожидаемое содержимое) есть.

(В Windows легко просмотреть файл JAR, используя 7zip.)

0 голосов
/ 13 апреля 2009

Вам необходимо понять концепцию CLASSPATH, которая позволяет вам добавлять отдельные классы и файлы JAR, содержащие классы, в «юниверс» определенных классов, доступных для кода, который вы хотите скомпилировать и / или запустить. По идее это похоже на переменную PATH в мире Windows.

Для командной строки 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 должны знать об этих классах

0 голосов
/ 12 апреля 2009

Определенно нет. Если вы отправите команду, которую запускаете, из командной строки, мы сможем указать вам правильное направление, но, скорее всего, вы просто пропускаете параметр classpath.

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

...