Понимание объявлений пути к классам Eclipse - PullRequest
10 голосов
/ 14 февраля 2012

Я пытаюсь понять файл пути к классам Eclipse, в частности, я хочу знать это:

  1. Как JRE использует его (т. Е. JVM читает этот XML-файл напрямую или Eclipse каким-то образом передает его во внутренний компилятор)?

  2. Как сложные записи (например, путь плюща ниже) анализируются и включаются в загрузчик классов JVM, когда я запускаю свои классы из своей среды IDE?

Контекст: у меня странная ошибка, которая заключается в том, что eclipse использует «неправильную» версию класса, тогда как моя сборка ivy / ant использует правильную версию, и поэтому я хочу использовать Eclipse, чтобы лучше имитировать используемый загрузчик классов в моем чистом виде. Чтобы сделать это, я думаю, мне придется взглянуть на файлы проекта / classpath Eclipse.

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry kind="src" path="test"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry kind="lib" path="conf"/>
    <classpathentry kind="con" path="org.apache.ivyde.eclipse.cpcontainer.IVYDE_CONTAINER/?ivyXmlPath=ivy.xml&amp;confs=*"/>
    <classpathentry kind="output" path="build"/>
</classpath>

Ответы [ 2 ]

10 голосов
/ 14 февраля 2012

Две разные вещи:

1) Project classpath используется для компиляции вашего кода с использованием Eclipse Java Compiler (ejc), поэтому информация о файле передается в EJC.

2) Когда вы создаете конфигурацию запуска, вы фактически объявляете путь к классу для запуска приложения, который по умолчанию основан на пути к классам вашего проекта. Этот путь к классу передается в качестве аргумента JVM, как если бы вы делали это вручную (java -cp $ {classpathentries} yourmainclass). Если вы хотите узнать, какой именно путь к классу в вашей конфигурации запуска, запустите ваше приложение / классы в режиме отладки и в представлении «Отладка» выберите ваш процесс и нажмите «Свойства», где вы увидите полный путь к классу (все файлы jars / каталоги, которые передаются в качестве аргумента JVM)

NB: Я не вижу твоих вещей на пути плюща.

0 голосов
/ 14 февраля 2012

Проблема может быть:

Это означает, что в вашем classpath затмения у вас должны быть две разные версии одного и того же класса (два разных jar-файла разной версии).Если это так, попробуйте удалить один.Также в вашем пути сборки eclipse есть что-то под названием «Build Order», где вы можете указать порядок jar classpath, попробуйте изменить его.

...