Подтвердить что ты не робот

Проблема Eclipse с Maven build и JDK при генерации Qclasses в Querydsl

Когда я добавлю этот код ниже в свой pom.xml для поддержки Querydsl

<plugin>
  <groupId>com.mysema.maven</groupId>
  <artifactId>apt-maven-plugin</artifactId>
  <version>1.0.6</version>
  <executions>
    <execution> 
      <goals>
        <goal>process</goal>
      </goals>
      <configuration>
        <outputDirectory>target/generated-sources/java</outputDirectory>
        <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
      </configuration>
    </execution>
  </executions>
</plugin>

Я получил эту ошибку при создании с помощью Eclipse. Я думаю, что это имеет отношение к classpath и JDK jars

You need to run build with JDK or have tools.jar on the classpath.
If this occures during eclipse build make sure you run eclipse under  JDK as well 
(com.mysema.maven:apt-maven-plugin:1.0.6:process:default:generate-sources)

.classpath:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src">
        <attributes>
            <attribute name="optional" value="true"/>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v8.0">
        <attributes>
            <attribute name="owner.project.facets" value="jst.web"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
        <attributes>
            <attribute name="maven.pomderived" value="true"/>
            <attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="output" path="target/classes"/>
</classpath>


Дополнительная информация:

enter image description here

Моя установка maven

enter image description here

JAVA_HOME: C:\Program Files\Java\jdk1.7.0_45
PATH:% JAVA_HOME%\bin;

4b9b3361

Ответ 1

РЕШЕНИЕ 1

Следуя этой ссылке

"Плагин Maven APT имеет известную проблему, которая предотвращает ее использование непосредственно из Eclipse. Пользователи Eclipse должны создать запрос Querydsl типы вручную, запустив команду mvn generate-sources в команде подскажите".

Итак, я запускаю командную строку mvn generate-sources в моем проекте floder с помощью консоли cmd, и я получил свои Qclasses.

РЕШЕНИЕ 2 из комментария @informatik01

мы можем явно указать JVM в eclipse.ini следующим образом:

-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe

-vmargs
...

Параметр -vm должен появиться перед параметром -vmargs и для получения дополнительной информации прочитайте комментарий @informatik01 ниже.

Ответ 2

Вы можете попробовать с этим в pom:

<plugin>
  <groupId>com.mysema.maven</groupId>
  <artifactId>apt-maven-plugin</artifactId>
  <version>1.0.6</version>
  <executions>
    <execution> 
      <goals>
        <goal>process</goal>
      </goals>
      <configuration>
        <outputDirectory>target/generated-sources/java</outputDirectory>
        <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
      </configuration>
    </execution>
  </executions>
  <dependencies>
    <dependency>
      <groupId>com.sun</groupId>
      <artifactId>tools</artifactId>
      <version>1.7</version>
      <scope>system</scope>
      <systemPath>${java.home}/../lib/tools.jar</systemPath>
     </dependency>
  </dependencies>
</plugin>

И посмотрите, не изменило ли оно что-либо. Он должен принудительно использовать tools.jar в пути сборки.


Изменить. так как это не помогло, попробуйте указать

-vm 
D:/work/Java/jdk1.6.0_13/bin/javaw.exe

в eclipse.ini(отдельные строки важны), как описано в этой теме.

Ответ 3

<groupId>com.mysema.maven</groupId>
        <artifactId>maven-apt-plugin</artifactId>
        <version>1.0.6</version>
        <executions>
            <execution>
                <goals>
                    <goal>process</goal>
                </goals>
                <configuration>
                        <outputDirectory>target/generated-sources/java</outputDirectory>
                        <processor>com.mysema.query.apt.jpa.JAPAnnotationProcessor</processor>
                </configuration>
            </execution>
        </executions>
    </plugin>

добавьте плагин, вы его решите

Ответ 4

Эта проблема произошла со мной, потому что, как упоминалось выше, сам Eclipse работал через JRE вместо JDK.

Я решил его, добавив % JAVA_HOME%\bin в начало моей переменной среды PATH.

Я выяснил, что затмение JVM использовало, прочитывая через: Узнайте, что работает JVM Eclipse

Ответ 5

Я сделал это наконец! Я пробовал так много вариантов, как это и это, но не повезло. Затем я прочитал этот комментарий, который спас мне жизнь, действительно, спасибо! Я следую этому решению и оно работает внезапно! должен быть принят ответ в моем случае.

Я скопировал tools.jar из C:\Program Files\Java\jdk1.8.0_151\lib в C:\Program Files\Java\jre1.8.0_151\lib после выполнения чистой установки mvn - @julio mulcue burbano

Ответ 6

Если вы создаете оболочку commond как mvn install. Затем запустите эту команду в окне оболочки или cmd: echo $CLASSPATH. Эта команда показывает ваш путь к классам.

Если вы используете Eclipse, откройте "Окно" > "Установки" > "Java" > "Установленные JRE", убедитесь, что установленные JRE файлы имеют место в корневом каталоге jdk. Для меня это C:\Java\jdk1.7.0_51

Надеюсь, что это поможет.

Ответ 7

Попробуйте обновить JDK в Eclipse, как показано ниже:

установите JRE в

посмотрите на путь ниже - с program files (но в указанном вами пути он не имеет program files в вашем пути, обычно java и все программы устанавливаются в program files, поэтому убедитесь, что этот путь)

 Window->Preferences...->Java->Installed JREs:

JRE type: Standard VM JRE 
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18

alos убедитесь, что путь JAVA_HOME правильно установлен на JDK\bin правильно (без пробелов и всего в этом пути)

Попробуйте скопировать ваш JDK в другое место и обновите JAVA_HOME с этим новым местоположением.

сообщите мне о любых других проблемах.

Ответ 8

Не забудьте проверить настройку Условия выполнения в настройках проекта Eclipse: Путь сборки проекта → Библиотеки → Системная библиотека JRE..

Если это неверно (например, jre), переключите его на jdk.

В моем случае это решило проблему ( "Вам нужно запустить сборку с помощью JDK или иметь tools.jar в пути к классам." исчезло).

Тогда прибл. четвертая строка в журнале регистрации Maven изменяется с (например.)

...
Java home: C:\Program Files\Java\jre1.8.0_66
....

to

 ...
 Java home: C:\Program Files\Java\jdk1.8.0_66\jre
 ...

Надеюсь, что это поможет.

Ответ 9

Я сделал все предложенное выше, но безрезультатно. Наконец, поскольку я настраивал новый компьютер, я понял, что у меня не установлена переменная JAVA_HOME.

Поэтому я всего лишь добавил переменную JAVA_HOME в мои системные переменные и установил для нее путь JDK: C:\Program Files\Java\jdk1.8.0_172

И вуаля - mvn generate-resources снова начал работать.