当前位置: 首页 > 知识库问答 >
问题:

在Querydsl中生成QClases时,Maven build和JDK出现Eclipse问题

万俟穆冉
2023-03-14

当我在我的pom中添加下面的代码时。支持Querydsl的xml

<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构建时遇到了这个错误。我认为它与类路径和JDK JAR有关

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>


额外信息:

My maven安装

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

共有3个答案

谢志文
2023-03-14

我终于做到了!我试过这么多像这样的选择,但没有运气。然后我读了这条救了我一命的评论,真的,谢谢!我遵循这个解决方案,它突然起作用了!在我的情况下应该是可以接受的答案。

我复制了工具。在我执行mvn clean install–@julio mulcue burbano之后,jar从C:\Program Files\Java\jdk1.8.0\U 151\lib到C:\Program Files\Java\jre1.8.0\U 151\lib

楚天宇
2023-03-14

您可以在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(单独的行很重要),如本线程中所述。

连俊智
2023-03-14

解决方案1

遵循此链接

“Maven APT插件存在一个已知问题,该问题阻止它直接从Eclipse中使用。Eclipse用户必须在命令提示符下运行命令mvn generate sources手动创建Querydsl查询类型。”

因此,我使用控制台cmd在我的项目floder中执行命令行mvn generate sources,并生成了qclass。

来自@informatik01注释的解决方案2

我们可以在eclipse.ini中显式指定JVM,如下所示:

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

-vmargs
...

-vm选项必须出现在-vmargs选项之前,有关更多信息,请阅读下面的@info atik01评论。

 类似资料:
  • 我正在尝试使用QueryDSL为Spring Data MongoDb生成QClass 在spring文档之后,我在pom中创建了插件条目。xml如下所示 我在执行元素上得到以下错误 您需要使用JDK运行build或在类路径上tools.jar。如果在eclipse构建期间发生这种情况,请确保您也在JDK下运行eclipse(com.mysema.maven:apt-maven-plugin:1.

  • 请帮助我的Q型不生成 我遵循《贝尔东指南》: https://www.baeldung.com/rest-api-search-language-spring-data-querydsl 此行有多个标记 com类型。querydsl。果心类型。无法解析谓词。它间接引用自required。类文件 无法解析插件。确保插件的groupId、artifactId和version存在。其他信息:插件com。

  • 在Firefox 51.0.1上使用Selenium 3.0.1打开Firefox浏览器的URL时,我遇到了问题 环境: 我收到以下例外: 组织。openqa。硒。火狐。NotConnectedException:45000毫秒后无法连接到端口7055上的主机127.0.0.1。Firefox控制台输出:“错误。还附加了快照。”。 这是我的代码: 非常感谢。

  • 该实体 存储库 创建Q类 我做错了什么?我使用的querydsl版本正确吗?我是不是应该回到mysema的建筑里去?是否有类似于JPA世界中的用于此目的的存储库? 提前道谢!

  • 我无法在eclipse中生成querydsl Q类。如果有人能提供帮助,我们将不胜感激。下面是我尝试过的方法和pom中的代码片段。xml文件 我复制了建议的插件设置位于这里: https://github.com/querydsl/apt-maven-plugin/wiki/m2e-usage M2E,并将maven生成的源文件夹作为eclipse源文件夹 我已经确保安装了Maven并更改了我的e