Понимание объявлений класса Eclipse

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

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

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

Контекст: У меня есть странная ошибка, которая заключается в том, что eclipse использует "неправильную" версию класса, тогда как моя конструкция ivy/ ant использует правильную версию, и поэтому я хочу, чтобы инструмент Eclipse лучше копировал classloader, используемый в моей чистой сборке. Чтобы сделать это, я думаю, что мне придется посмотреть файлы проекта /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>

Ответ 1

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

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

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

NB: я не вижу ваш путь к плющу.

Ответ 2

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

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