gpt4 book ai didi

java - 为什么/Eclipse 在哪里注入(inject)额外的库,例如 JPA 1.0?

转载 作者:行者123 更新时间:2023-12-01 12:01:35 25 4
gpt4 key购买 nike

尝试在 Eclipse 上下文中运行任何内容时,我突然收到此错误:

Caused by: java.lang.NoSuchMethodError: javax.persistence.spi.PersistenceUnitInfo.getValidationMode()Ljavax/persistence/ValidationMode;

我知道这是使用旧的 JPA 1.0 规范,而我的项目使用 JPA 2.0。我可以通过 Maven 和 IDEA 运行我的单元/集成测试,没有问题,但如果我在 Eclipse 中运行它们(尝试过 Kepler 和 Luna),我会收到错误。

做了一些挖掘,我发现旧的库是通过 ProjectClassLoader 注入(inject)的:

ProjectClassLoader: entry= $HOME/.m2/repository/javax/persistence/persistence-api/1.0.2/persistence-api-1.0.2.jar

但是它没有出现在我的 Maven 依赖项或传递依赖项中。这不是我第一次看到这种情况。上次我删除了项目并重新创建了它,但这次该方法失败了。我还尝试过禁用 JPA Facet。

我该如何解决这个问题?

最佳答案

有 2 个地方值得一看。两者都在项目属性下。

首先,如果您的项目正在使用构面,请查看该部分。 JPA 将列出三个方面。应进行检查,右侧的下拉列表应为 2.0(或 2.1)。

接下来还有一个 JPA 选项卡。它下面有几个选项卡,但主要是设置 JPA 版本并指定实现。这可能是您拉入 1.0 jar 的地方。

如果您打开了切面,请确保这两个位置一致。您可以很容易地使它们不同步,并且弄清楚它们是令人困惑和烦人的。

关于java - 为什么/Eclipse 在哪里注入(inject)额外的库,例如 JPA 1.0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27950590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com