eclipse - Eclipse Apache ISIS HelloWorld 原型错误:flatten、QHelloWorldObject、maven build java.sql.SQLException 缺失
问题描述
我正在尝试让 apache ISIS 项目在 Eclipse 中正常工作。我遇到一些问题:
src/main/java/domainapp.dom.impl/HelloWorldObjects.findByName(...) 中的编译错误:
QHelloWorldObject cannot be resolved to a type
pom.xml .../plugin/executions/execution/id=flatten:
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:flatten-maven-plugin:1.0.0:flatten
使用目标创建 Maven 构建配置时:clean package jetty:run。我得到:(
[ERROR] Failed to execute goal org.datanucleus:datanucleus-maven-plugin:5.0.2:enhance ... Error executing DataNucleus tool org.datanucleus.enhancer.DataNucleusEnhancer: InvocationTargetException: java/sql/SQLException: java.sql.SQLException ... org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal ... Caused by: java.lang.ClassNotFoundException: java.sql.SQLException
但是在 Eclipse 外部的命令行上一切正常。我还可以使用 org.apache.isis.WebServer 类将应用程序作为 Java 应用程序启动)当我运行 Project > DataNuclues > Run Schema Tool SchemaInfo 时,我得到: DataNucleus SchemaTool : Schema information
An error was encountered creating a PersistenceManagerFactory : Error creating transactional connection factory - please consult the log for more information.
从项目中添加/删除 DataNucleus 没有任何区别。
我想我正确地遵循了https://isis.apache.org/setupguide/2.0.0-M5/eclipse/about.html中的所有步骤。DataNucleus 插件和 Lombok 都在那里。
我在带有 openJDK 11 eclipse-2021-03 的 Linux (OpenSUSE 15.3) 机器上(我重新安装了这个版本,下载了所有最新的插件,它在一个新的 eclipse 工作区中,没有其他项目) .
该项目是在 Eclipse 中使用 File > New > Project > Maven > Maven Project GroupId: org.apache.isis.archetype, ArtifactId: helloworld-archetype 创建的
我似乎无法查明造成这种情况的原因,而且我在兜圈子,经过几个小时后我又回到了起点。谁能指出我正确的方向?
解决方案
感谢您试用 Apache Isis。您的问题可能是您正在尝试使用旧的原型,可能与 JDK11 结合使用。由于 git repos 现在无处不在,我们决定转而使用 git repo 来维护我们的入门应用程序……这也意味着我们可以在正式发布节奏之外改进它们。
详细信息在网站的主页上,在“快速入门”部分......或更多详细信息在这里。如果您正在为 JDO 的 DN 增强器苦苦挣扎(诚然,这可能有些繁琐),那么请注意,从 2.0.0-M5 开始,我们也支持 JPA,这消除了该要求。
关于您遇到的错误,这里有一些想法:
Qxxx 文件是使用作为编译过程的一部分运行的 DataNucleus 注释处理器创建的。如果您使用 maven 构建应用程序,您应该会看到它们已创建 - 检查 Eclipse 的编译过程是否也在合理的位置生成它们,并且该位置是它编译的源路径之一。
我们不再使用 flatten 插件,所以这与旧原型有关。
再次,与旧原型有关。2.0.0-M5 使用 Spring Boot。
我不知道您为什么要运行 DN 的 SchemaTool。这用于手动创建模式。我们通常会让 DN 在原型模式下运行时自动创建数据库模式。如果在生产环境中运行,Flyway 是处理模式迁移的方法。
如果您需要更多帮助,请考虑加入我们的slack 频道
推荐阅读
- node.js - 当正在运行的容器因任何原因失败时,Kubernetes 是否会重新启动失败的容器或创建新容器?
- node.js - Puppeteer pdf 图像无法正确渲染
- java - eclipse ide中的构建路径不完整
- akka - AKKA 经典多接口连接
- c - 你会如何在 C 中进行咖喱
- java - TreeSet.headSet(someElement).size() 的替代方案,降低了时间复杂度
- c# - 缺少一组特定方法的 Access-Control-Allow-Origin 标头
- javascript - 删除嵌套元素时jQuery更新祖先内容
- c# - Datagridview 数据填充在一台机器上但不是另一台 C# (Win Forms)
- python - 循环嵌套字典并将子项放在新字典中