首页 > 解决方案 > Eclipse Apache ISIS HelloWorld 原型错误:flatten、QHelloWorldObject、maven build java.sql.SQLException 缺失

问题描述

我正在尝试让 apache ISIS 项目在 Eclipse 中正常工作。我遇到一些问题:

  1. src/main/java/domainapp.dom.impl/HelloWorldObjects.findByName(...) 中的编译错误:QHelloWorldObject cannot be resolved to a type

  2. pom.xml .../plugin/executions/execution/id=flatten: Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:flatten-maven-plugin:1.0.0:flatten

  3. 使用目标创建 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 应用程序启动)

  4. 当我运行 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 创建的

我似乎无法查明造成这种情况的原因,而且我在兜圈子,经过几个小时后我又回到了起点。谁能指出我正确的方向?

标签: eclipsemaven-plugindatanucleusisis

解决方案


感谢您试用 Apache Isis。您的问题可能是您正在尝试使用旧的原型,可能与 JDK11 结合使用。由于 git repos 现在无处不在,我们决定转而使用 git repo 来维护我们的入门应用程序……这也意味着我们可以在正式发布节奏之外改进它们。

详细信息在网站的主页上,在“快速入门”部分......或更多详细信息在这里。如果您正在为 JDO 的 DN 增强器苦苦挣扎(诚然,这可能有些繁琐),那么请注意,从 2.0.0-M5 开始,我们也支持 JPA,这消除了该要求。

关于您遇到的错误,这里有一些想法:

  1. Qxxx 文件是使用作为编译过程的一部分运行的 DataNucleus 注释处理器创建的。如果您使用 maven 构建应用程序,您应该会看到它们已创建 - 检查 Eclipse 的编译过程是否也在合理的位置生成它们,并且该位置是它编译的源路径之一。

  2. 我们不再使用 flatten 插件,所以这与旧原型有关。

  3. 再次,与旧原型有关。2.0.0-M5 使用 Spring Boot。

  4. 我不知道您为什么要运行 DN 的 SchemaTool。这用于手动创建模式。我们通常会让 DN 在原型模式下运行时自动创建数据库模式。如果在生产环境中运行,Flyway 是处理模式迁移的方法。

如果您需要更多帮助,请考虑加入我们的slack 频道


推荐阅读