当前位置: 首页 > 知识库问答 >
问题:

嵌套异常为java.lang.LinkageError:加载程序约束冲突

司徒钱青
2023-03-14
Failed to instantiate [javax.persistence.EntityManager]: 
Factory method 'createSharedEntityManager' threw exception; 
nested exception is java.lang.LinkageError: loader constraint violation:
loader (instance of com/ibm/ws/classloading/internal/ThreadContextClassLoader)
previously initiated loading for a different type with name
"org/eclipse/persistence/expressions/Expression"
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence 
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" 

    version="2.0">

<persistence-unit name="authentication"
    transaction-type="RESOURCE_LOCAL">
    <provider>
        org.eclipse.persistence.jpa.PersistenceProvider
    </provider>

    <class>
        com.bank.arc.commons.entity.AuthenticationEntity
    </class>

    <properties>
        <property name="eclipselink.weaving" value="static" />
        <property name="eclipselink.target-server" value="WebSphere_Liberty" 
            /> 
        <property name="eclipselink.target-database"
        value="org.eclipse.persistence.platform.database.DB2Platform" />
        <property name="eclipselink.logging.level" value="WARNING" />

    </properties>

</persistence-unit>
@Configuration
@EnableTransactionManagement
@EnableConfigurationProperties(DbAuthenticationProperties.class)
@EnableJpaRepositories(basePackages = {"com.bank.arc.commons.dao.repository"}, 
entityManagerFactoryRef = "authenticationDbEntityManagerFactory", 
transactionManagerRef = "authenticationDbTransactionManager")


public class DbAuthenticationConfig extends DbConfig {

@Autowired
private DbAuthenticationProperties  properties;

@PostConstruct
public void init() {
    super.setProperties(properties);
}

@Bean
@Primary
public DataSource authenticationDbDataSource() {
    return super.dataSource();
}

@Bean
@Primary
public LocalContainerEntityManagerFactoryBean authenticationDbEntityManagerFactory() {
    return super.entityManagerFactoryBean(authenticationDbDataSource(), authenticationDbJpaVendorAdapter(), "authentication");
}

@Bean
@Primary
protected JpaVendorAdapter authenticationDbJpaVendorAdapter() {
    return super.jpaVendorAdapter(DatabasePlatform.DB2);
}

@Bean
@Primary
protected PlatformTransactionManager authenticationDbTransactionManager() {
    return super.transactionManager(authenticationDbEntityManagerFactory());
}

}

和server.xml:

<server description="new server">

<featureManager>
    <feature>localConnector-1.0</feature>
    <feature>jdbc-4.1</feature>
    <feature>servlet-3.1</feature>
    <feature>jpa-2.1</feature>
</featureManager>

<httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>

<!-- Automatically expand WAR files and EAR files -->
<applicationManager autoExpand="true"/>

<jpa defaultPersistenceProvider="org.eclipse.persistence.jpa.PersistenceProvider" ignoreDataSourceErrors="true"/> 

<applicationMonitor updateTrigger="mbean"/>

<webApplication id="authentication-endpoint" location="authentication-endpoint.war" name="authentication-endpoint"/>
</server>

共有1个答案

曾景龙
2023-03-14

首先尝试更改为Parent,这样classloader将从liberty(app server)加载,然后应用程序将覆盖加载的类。

 <application location="...">
   <classloader delegation="**parentFirst**" privateLibraryRef="...." />
 </application>

参考:

https://www.ibm.com/support/knowledgecenter/en/ssaw57_9.0.0/com.ibm.websphere.nd.multiplatform.doc/ae/urun_rclassloader_inst.html

 类似资料:
  • 我见过其他的链接错误,但没有一个能说明如何使用罐子。当我在Jboss中部署我的应用程序时,它可以正常工作,但当我将应用程序部署到websphere时,我遇到了这种链接错误。在这里可以找到一个类似的问题:调用webservice方法时出现LinkageError,但不确定如何修复它 它主要是从和加载的,带有共享类 我所拥有的是jsp调用Web服务。从消息中,我看到的唯一jars来自axis.jar,

  • 我在WebSphereApplicationServer(8.5.5.14)中遇到了LinkageError。这里也发现了类似的问题LinkageError 原因:java。lang.LinkageError:解析方法“javax/xml/soap/SOAPElement.getElementQName()Ljavax/xml/namespace/QName;”时加载约束冲突:loader“com

  • 组织。springframework。豆。BeanInstationException:无法实例化bean类[gts.efx.web.login.LogInController]:构造函数引发异常;嵌套的例外是java。lang.LinkageError:加载程序约束冲突:解析方法“javax.net.ssl.SSLContext.getSocketFactory()Ljavax/net/ssl/

  • 问题内容: 我遇到了一个项目有两次相同的.jar(对于我来说,是el-api.jar v2.1)两次的问题,因此,当我尝试使用Tomcat 6运行项目时,出现了以下错误堆栈。 我发现了 http://blog.springsource.com/2008/10/20/understanding-the-osgi-uses- directive/ 但这没有用,因为解决方案影响了我项目的太多部分。 我无

  • 我发现以下错误: 似乎我的云平台默认包,我收到这个错误,因为我还将slf4j作为依赖项放在我的pom文件中,并且两个不同的类加载器正在加载 我解决这个问题的方法是将pom中的依赖范围更改为提供。 但副作用是我无法在本地的tomcat上运行它,因为它找不到slf4j库。 在这种情况下,可以做些什么来使我的战争在我的云平台和我的本地tomcat上正常运行?

  • 当我在jboss 6中部署web服务项目时。我要参加下面的比赛 原因:java。lang.LinkageError:接口itable初始化中的加载程序约束冲突:解析方法“org.apache.axis.message.MessageElement.getChildElements(Ljavax/xml/namespace/QName;)时Ljava/util/Iterator;“当前类org/ap