gwt - Datanucleus + GWT 编译过程
问题描述
我尝试使用 Maven 编译 GWT+App Engine+JDO+Datanucleus 项目。当 maven 开始编译 java 源时,我收到错误:
[DEBUG] Source roots:
[DEBUG] /home/desarrollo26/eclipse-workspace/projectName/src
[DEBUG] /home/desarrollo26/eclipse-workspace/projectName/target/generated-sources/annotations
[DEBUG] Command line options:
[DEBUG] -d /home/desarrollo26/eclipse-workspace/projectName/target/projectName-1.0-SNAPSHOT/WEB-INF/classes -classpath (all .m2 dependencies)
[DEBUG] incrementalBuildHelper#beforeRebuildExecution
[INFO] Compiling 644 source files to /home/desarrollo26/eclipse-workspace/projectName/target/projectName-1.0-SNAPSHOT/WEB-INF/classes
DataNucleus : JDOQLTypedQuery Q class generation : com.projectName.server.extension.TokenExtension -> com.projectName.server.extension.QTokenExtension
我遵循了 Datanucleus 文档页面中的所有 datanucleus-maven、JDO 和增强流程,并且 JDO 和 JDO Query 存在于 CLASSPATH 中,但持续错误是:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 12.814 s (Wall Clock)
[INFO] Finished at: 2018-09-17T13:00:24+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project Nubbius: Fatal error compiling: java.lang.NoClassDefFoundError: javax/jdo/query/PersistableExpression: javax.jdo.query.PersistableExpression
实际上,我对 JDO/JPA、Datanucleus 的依赖:
<!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>persistence-api</artifactId>
<version>1.0.2</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.google.appengine.orm</groupId>
<artifactId>datanucleus-appengine</artifactId>
<scope>runtime</scope>
<version>2.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.datanucleus/datanucleus-jdo-query -->
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-jdo-query</artifactId>
<version>(3.9, )</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.ow2.asm/asm -->
<dependency>
<groupId>org.ow2.asm</groupId>
<artifactId>asm</artifactId>
<version>5.0.3</version>
</dependency>
Datanucleus 自动增强器插件:
<plugin>
<groupId>org.datanucleus</groupId>
<artifactId>maven-datanucleus-plugin</artifactId>
<version>3.2.0-m1</version>
<configuration>
<api>JDO</api>
<props>${basedir}/datanucleus.properties</props>
<log4jConfiguration>${project.basedir}/src/log4j.properties</log4jConfiguration>
<enhancerName>ASM</enhancerName>
<verbose>true</verbose>
<fork>false</fork>
<metadataIncludes>**/*.jdo</metadataIncludes>
<metadataIncludes>**/*.class</metadataIncludes>
</configuration>
<dependencies>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-core</artifactId>
<version>3.1.1</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jdo</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-api-jpa</artifactId>
<version>3.1.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.datanucleus/datanucleus-enhancer -->
<dependency>
<groupId>org.datanucleus</groupId>
<artifactId>datanucleus-enhancer</artifactId>
<version>3.1.1</version>
</dependency>
<dependency>
<groupId>com.google.gwt</groupId>
<artifactId>gwt-user</artifactId>
<version>2.8.2</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>enhance</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
这里是 GWT 构建过程:
<plugin>
<groupId>net.ltgt.gwt.maven</groupId>
<artifactId>gwt-maven-plugin</artifactId>
<version>1.0-rc-8</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<configuration>
<moduleName>com.projectName.Administracion</moduleName>
<moduleName>com.projectName.Cronometro</moduleName>
<moduleName>com.projectName.Extension</moduleName>
<moduleName>com.projectName.projectName</moduleName>
<failOnError>true</failOnError>
<!-- GWT compiler 2.8 requires 1.8, hence define sourceLevel here if you use
a different source language for java compilation -->
<sourceLevel>1.8</sourceLevel>
<!-- Compiler configuration -->
<compilerArgs>
<!-- https://tbroyer.github.io/gwt-maven-plugin/compile-mojo.html -->
<!-- Ask GWT to create the Story of Your Compile (SOYC) (gwt:compile) -->
<arg>-compileReport</arg>
<arg>-XcompilerMetrics</arg>
<arg>-Xms1024M</arg>
<arg>-Xmx2014M</arg>
</compilerArgs>
<style>DETAILED</style>
<draftCompile>TRUE</draftCompile>
<localWorkers>6</localWorkers>
<!-- CodeserverMode configuration (for debugging in SuperDevMode -->
<!-- https://tbroyer.github.io/gwt-maven-plugin/codeserver-mojo.html -->
<codeServerPort>9997</codeServerPort>
<jvmArgs>
<arg>-Xms1024M</arg>
<arg>-Xmx2014M</arg>
<arg>-javaagent:localDependenciesPath/appengine-java-sdk-1.9.59/lib/agent/appengine-agent.jar </arg>
</jvmArgs>
<classpathScope>runtime</classpathScope>
<!-- URL(s) that should be opened by DevMode (gwt:devmode). -->
<startupUrls>
<startupUrl>projectName.jsp</startupUrl>
</startupUrls>
</configuration>
</plugin>
<!-- Compilador -->
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
有谁知道什么会导致该错误?谢谢!
解决方案
推荐阅读
- arrays - 将数组复制到数组索引 C
- git - 如何指定拉动深度(在 TortoiseGit 中)?
- embedded-linux - 根据变量值排除 yocto 元层
- bash - 在 Git Fetch 和缓存中传递凭据
- tensorflow - 如何访问 4 位 QAT 模型的权重
- python - How to mak a transaction method in a BankAccount class?
- spring-boot - org.springframework.orm.jpa.JpaSystemException:无法初始化代理 [Order#orderdate] - 没有会话;
- javascript - useEffect 和文档标题更新
- python - 使用 AWS Lambda 将存储在 S3 Bucket 中的 JSON 文件转换为 CSV
- python - AttributeError:模块“speedtest”没有属性“Speedtest”test_get_server 未定义