Я могу добавить классы к rt.jar файлу солнца?

Вы возвращаете список Document объектов, но подписываете метод с типом возврата IEnumerable<TResult> ... так что, если TResult не является типом того, чем является Document (для которого требуется ограничение, на T и TResult), они не являются напрямую конвертируемыми.

Существует параметр mapping, который выглядит как функция преобразования / проецирования, поэтому вы можете использовать:

return response.Results.Select(mapping);

PS: как нашёл @Sweeper, посмотрев на API, должно быть:

return response.Results.Select(x => Document).Select(mapping);
5
задан javaphild 12 April 2009 в 19:17
поделиться

5 ответов

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

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

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

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

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

1
ответ дан 14 December 2019 в 13:47
поделиться

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

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

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

2
ответ дан 14 December 2019 в 13:47
поделиться

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

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

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

3
ответ дан 14 December 2019 в 13:47
поделиться

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

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

0
ответ дан 14 December 2019 в 13:47
поделиться

Вам необходимо понять концепцию 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.

0
ответ дан 14 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: