问题标签 [linkageerror]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java常量池的解析策略
从Java SE 规范和“ Java 虚拟机内部”等许多地方,他们都指出,当常量池条目的解析需要加载类型时,虚拟机使用加载引用类型的相同类加载器来加载引用类型。
但是,我发现这条规则并不总是成立:
我定义了一个自定义的ClassLoader
,它在它的构造函数中接受一个应该由它自己定义的类名列表。基于此,baseCL
配置为加载类和加载和Login
(我User
知道这个设置破坏了类加载器委托模型)。specialCl
User
Main
运行此示例会产生:
它说login
方法是用notu
加载的对象调用的。这种现象与一开始所说的概念相反,这真的很奇怪,我不知道哪里出了问题。specialCl
baseCL
此外,使用baseCl
to load classUser
总是失败并显示LinkageError
: loader constraint violation: loader (instance of com/alaneuler/test/LinkageMain$MyClassLoader) previously initiated loading for a different type with name "com/alaneuler/test/LinkageMain$User"
。
我的问题是:
- 不应该调用
login
立即引发错误吗? - 为什么以下
baseCL
加载的用法User
失败了LinkageError
?
任何帮助,将不胜感激!
归功于 Frank Kieviet 的博客,因为示例是从他对LinkageError
.
linkageerror - java.lang.LinkageError: com.facebook.litho.sections.widget.RecyclerCollectionComponent
使用 litho RecyclerCollectionComponent 时
java - JBoss Java LinkageError - 违反加载程序约束
我们正在尝试从 jboss-4.2.3.GA 迁移到 Wildfly-preview-24.0.1.Final
旧的应用程序配置 -
jboss-4.2.3.GA hibernate 3 jdk 1.5 或 1.7 apache ant apache-ant-1.9.16 eclipse strut 2 数据库 edb (Postgres)
新的应用程序配置
Wildfly-preview-24.0.1.Final hibernate 5.3 jdk 17 apache ant apache-ant-1.9.16 eclipse 数据库 Postgres sql 14 strut 2
我们已经在 Wildfly-preview-24.0.1.Final 上成功构建并部署了我们的应用程序。我们能够使用 JNDI 连接数据库并使用 hibernate 从数据库中获取数据并成功登录我们的应用程序。
在尝试对表运行搜索时 - 我们得到一个链接错误 - 加载程序约束违规。
我们收到以下错误
引起:java.lang.LinkageError:加载器约束违规:解析接口方法时'net.voicelog.callRecording.dataObjects.QueryResult net.voicelog.callRecording.ejb.HQLQuerySessionLocal.runHQLQuery(net.voicelog.callRecording.dataObjects.QueryDataObject, net .voicelog.callRecording.entities.Client, net.voicelog.callRecording.entities.User, net.voicelog.callRecording.utility.PreferenceHelper, int, boolean)' 类加载器'deployment.callRecording-V7_6_7.ear.callRecording.war'当前类的@6919fa92,net/voicelog/callRecording/gui/actions/search/ProcessSearchAction,以及方法定义类的类加载器'deployment.callRecording-V7_6_7.ear.callRecording.jar'@6a983558,net/voicelog/ callRecording/ejb/HQLQuerySessionLocal,对于签名中使用的类型 net/voicelog/callRecording/dataObjects/QueryDataObject 有不同的 Class 对象
已部署的 Ear 文件结构 -
callRecording-V7_6_7.ear
---- META-INF(文件夹)
---- lib(文件夹包含支持的 jars)
---- callRecording.war
---- callRecording.jar
---- callRecording-junitee.war
任何见解都会有所帮助。
谢谢
java - Repli中的Java LinkageError
我找不到如何在 Replit 中提问,所以我在这里问。
我正在尝试在 Replit 上运行 Minecraft 1.17.1 服务器,但是当我运行server.jar
文件时:
我收到以下错误:
我相信这与 Replit 上的 Java 版本有关,但我不确定如何更新 Java。
任何帮助表示赞赏。
java - org.springframework.boot.loader.LaunchedURLClassLoader 尝试重复的 {class} 类定义在加载器的未命名模块中
我在 Gradle Java sprint 启动项目中使用 jar 作为依赖项。得到这个错误
这看起来像这个类被加载了两次。首先在 sprint 启动应用程序启动时,然后在调用 a 方法时再次使用该 xxx.class。
LaunchedURLClassLoader 用作 url 类加载器,我假设它在启动时加载类/jar。为什么它试图再次加载一个类?
java - 当我尝试在 jboss 7.2 中部署我的 java 应用程序时,我遇到了 Linkage 错误
我在 jboss 中部署的模块依赖于 org.springframework:spring-orm:4.3.16.Release。我没有看到任何重复的依赖项添加到类路径中。根据我理解的例外情况,我的应用程序使用一个版本成功编译,并且在部署期间它引用了另一个版本。但我在任何地方都看不到任何重复的版本。
任何人都可以在这里帮助我解决问题吗?请在下面找到详细的例外情况。
org/springframework/orm/jpa/vendor/SpringHibernateJpaPersistenceProvider 及其超类加载器(org/jboss/modules/ModuleClassLoader 的实例)对于签名中使用的 javax/persistence/EntityManagerFactory 类型具有不同的 Class 对象 原因:java.lang .RuntimeException:[org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]:工厂方法'entityManagerFactory'抛出异常;嵌套异常是 java.lang.LinkageError:加载程序约束违规:解析覆盖方法时“org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(Ljavax/persistence/spi/PersistenceUnitInfo;Ljava/util/Map;)Ljavax/persistence /实体管理器工厂;" 当前类的类加载器(org/jboss/modules/ModuleClassLoader 的实例),org/springframework/orm/jpa/vendor/SpringHibernateJpaPersistenceProvider 及其超类加载器(org/jboss/modules/ModuleClassLoader 的实例)对于签名中使用的 javax/persistence/EntityManagerFactory 类型具有不同的 Class 对象,无法实例化 [org. springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]:工厂方法'entityManagerFactory'抛出异常;嵌套异常是 java.lang.LinkageError:加载程序约束违规:解析覆盖方法时“org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(Ljavax/persistence/spi/PersistenceUnitInfo;Ljava/util/Map;)Ljavax/persistence /实体管理器工厂;" 当前类的类加载器(org/jboss/modules/ModuleClassLoader 的实例),org/springframework/orm/jpa/vendor/SpringHibernateJpaPersistenceProvider 及其超类加载器(org/jboss/modules/ModuleClassLoader 的实例)对于签名中使用的 javax/persistence/EntityManagerFactory 类型具有不同的 Class 对象 原因:org.springframework .beans.BeanInstantiationException:无法实例化[org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]:工厂方法'entityManagerFactory'抛出异常;嵌套异常是 java.lang.LinkageError:加载程序约束违规:解析覆盖方法时“org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(Ljavax/persistence/spi/PersistenceUnitInfo;Ljava/util/Map;)Ljavax/persistence /实体管理器工厂;" 当前类 org/springframework/orm/jpa/vendor/SpringHibernateJpaPersistenceProvider 的类加载器(org/jboss/modules/ModuleClassLoader 的实例)及其超类加载器(org/jboss/modules/ModuleClassLoader 的实例),具有不同的类签名中使用的 javax/persistence/EntityManagerFactory 类型的对象 原因:java.lang.LinkageError:加载程序约束违规:解析覆盖方法时“org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(Ljavax/persistence/spi /PersistenceUnitInfo;Ljava/util/Map;)Ljavax/persistence/EntityManagerFactory;" 当前类的类加载器(org/jboss/modules/ModuleClassLoader的实例),org/springframework/orm/jpa/vendor/SpringHibernateJpaPersistenceProvider,
linker - 不使用变量时外部不工作
我创建了一个名为 extern 的变量x
,并且该变量x
在任何其他文件中都不存在,因此,链接器应该给我一个错误。如果我只声明 extern 变量 ( extern int x;
) 而没有实际使用该变量,它不会给我任何错误,但是当我使用该变量时,它会给我一个错误。为什么我只放声明时链接器不给我一个错误?
无错误:
给我错误: