繁体   English   中英

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

Why/Where does Eclipse inject extra libraries such as JPA 1.0?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

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

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

进行一些挖掘,我发现较旧的库是通过ProjectClassLoader注入的:

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

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

我该如何解决?

2 个回复

有2个地方可以看。 两者都在项目属性下。

首先,如果您的项目正在使用构面,请查看该部分。 JPA将列出三个方面。 应该选中它,并且右边的下拉列表应该是2.0(或2.1)。

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

如果启用了构面,请确保两个位置一致。 您可以很容易地使它们不同步,弄清楚它们既令人困惑又烦人。

我终于能够“解决”这个问题-至少让自己重新工作。 这是我所做的:

  1. 在Eclipse中删除了我的项目
  2. 删除磁盘上的.classpath和.project文件(例如,查找。-name“ .classpath” | xargs rm)
  3. 重新导入我的Maven项目

神奇的是,JPA 1.0不再包含在项目中。 @Terry有一些不错的信息,但根据他的记录,我的配置似乎正确。 我认为这只是一个变通办法,Eclipse Luna内可能存在与此有关的错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题
 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM