2012-02-14 2 views
10

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

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

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

Контекст: У меня есть странная ошибка, которая является то, что затмение использует «неправильную» версию класса, в то время как мой плющ/муравей сборки использует правильную версию, и, таким образом, я хочу, чтобы инструмент Eclipse, чтобы лучше mimick загрузчик классов, используемый в моей чистой сборке. Для этого я думаю, что мне придется посмотреть файлы проекта/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> 
+0

Я не верю, что JVM ничего не знает о файле пути Eclipse. Вы можете сбить тестовый класс с основным блоком, который просто распечатывает System.getProperty («java.class.path»), который покажет вам, что все ваши сложные ссылки просто разрешены для размещения файлов jar на диске, которые затем загружается в обычный путь класса JRE. Если у вас есть непонятная ошибка с материалом Ivy, вы можете поднять его с помощью разработчиков плагина Ivy Eclipse? Удачи, разрешив вашу проблему – davidfrancis

ответ

10

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

1) Проект классам используется для компиляции кода с помощью Eclipse, Java Compiler (ЕЕК), поэтому информация о файле передается ЕЕК.

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

NB: Я не вижу ваш материал плюща.

+0

Благодаря указанию «debug, properties», это то, что я ищу. –

+0

Есть ли способ изменить путь к классу вручную в конфигурации запуска? Некоторые из наших проектов зависимостей maven имеют ресурсы тестирования в исходной папке src/test/resources. Команда запуска eclipse будет включать папку целевых/тестовых классов в конечный путь к классам, чего мы не хотели. – Chris

0

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

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

Смежные вопросы