Вы возвращаете список Document
объектов, но подписываете метод с типом возврата IEnumerable<TResult>
... так что, если TResult
не является типом того, чем является Document
(для которого требуется ограничение, на T
и TResult
), они не являются напрямую конвертируемыми.
Существует параметр mapping
, который выглядит как функция преобразования / проецирования, поэтому вы можете использовать:
return response.Results.Select(mapping);
PS: как нашёл @Sweeper, посмотрев на API, должно быть:
return response.Results.Select(x => Document).Select(mapping);
Добавление вещей в rt.jar кажется плохой идеей, хотя это возможно и легко осуществить.
Попробуйте скомпилировать приложение из командной строки следующим образом:
javac -cp <path_to_3rd_libs>/jarfile.jar . MainClass.java
Если компилятор все еще жалуется на пакет javax.mail, попробуйте распаковать / проверить файл jar, чтобы увидеть, что пакет javax.mail (и его ожидаемое содержимое) там.
(В Windows легко просмотреть файл JAR, используя 7zip.)
Вы должны либо указать файл jar в вашем classpath: предпочтительно в командной строке с параметром -cp
, но, возможно, с переменной среды CLASSPATH
.
Кроме того, вы можете указать его каталог в системном свойстве java.ext.dirs
. Больше подробностей, см. документацию для механизма расширений .
Вы не должны возиться с rt.jar
. Это совершенно определенно не способ сделать дополнительные файлы JAR доступными - это все равно, что пытаться добавить Microsoft Word в ядро Windows;)
Нет, вы не можете и не должны.
Вместо этого выясните проблему с вашим загрузчиком классов (возможно, пути?). Это понадобится вам для следующей библиотеки, к которой вам нужен доступ.
Использование rt.jar означает, что вы не можете работать на любой другой JVM.
Определенно нет. Если вы опубликуете команду, которую запускаете из командной строки, мы сможем указать вам правильное направление, но, скорее всего, вам просто не хватает параметра classpath.
java -classpath /path/to/mail.jar MyClass
Вам необходимо понять концепцию 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.