尝试运行单元测试时出现以下错误。 当我在tomcat下运行应用程序时不会发生错误(但奇怪的是,当我从snapcraft安装的snap中运行tomcat时,它不会给出相同的错误。)
初始会话工厂创建失败: java.lang.SecurityException:类“javax.persistence.PersistenceUtil”的签名者信息与同一包中其他类的签名者信息不匹配
单元测试和tomcat war使用相同的方法初始化jpa:
private static EntityManagerFactory emf = null;
public static void init(String persistenceUnitName)
{
try
{
if (emf == null)
emf = Persistence.createEntityManagerFactory(persistenceUnitName);
else
{
logger.error("Someone is trying to initialise EntityManagerUtil a second time."
+ Arrays.toString(Thread.currentThread().getStackTrace()));
}
}
catch (Throwable e)
{
logger.error("Initial Session factory creation failed: " + e);
throw e;
}
}
通过我的pom导入了两个版本的javax.persistence.PersistenceUtil类。
直接在jar中找到一个: 的EclipseLink-2.7.1.jar
另一个在罐子里: javax.persistence-2.2.0.jar
第二个jar javax.persistence是eclipselink-2.7.1.jar的依赖。
如果我排除了javax.persistence jar,那么该项目将无法编译。