问题标签 [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.

0 投票
1 回答
88 浏览

java - Java常量池的解析策略

从Java SE 规范和“ Java 虚拟机内部”等许多地方,他们都指出,当常量池条目的解析需要加载类型时,虚拟机使用加载引用类型的相同类加载器来加载引用类型。

但是,我发现这条规则并不总是成立:

我定义了一个自定义的ClassLoader,它在它的构造函数中接受一个应该由它自己定义的类名列表。基于此,baseCL配置为加载类和加载和Login(我User知道这个设置破坏了类加载器委托模型)。specialClUserMain

运行此示例会产生:

它说login方法是用notu加载的对象调用的。这种现象与一开始所说的概念相反,这真的很奇怪,我不知道哪里出了问题。specialCl baseCL

此外,使用baseClto 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"

我的问题是:

  1. 不应该调用login立即引发错误吗?
  2. 为什么以下baseCL加载的用法User失败了LinkageError

任何帮助,将不胜感激!

归功于 Frank Kieviet 的博客,因为示例是从他对LinkageError.

0 投票
1 回答
26 浏览

linkageerror - java.lang.LinkageError: com.facebook.litho.sections.widget.RecyclerCollectionComponent

使用 litho RecyclerCollectionComponent 时

0 投票
0 回答
28 浏览

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

任何见解都会有所帮助。

谢谢

0 投票
0 回答
17 浏览

java - Repli中的Java LinkageError

我找不到如何在 Replit 中提问,所以我在这里问。

我正在尝试在 Replit 上运行 Minecraft 1.17.1 服务器,但是当我运行server.jar文件时:

我收到以下错误:

我相信这与 Replit 上的 Java 版本有关,但我不确定如何更新 Java。

任何帮助表示赞赏。

0 投票
0 回答
113 浏览

java - org.springframework.boot.loader.LaunchedURLClassLoader 尝试重复的 {class} 类定义在加载器的未命名模块中

我在 Gradle Java sprint 启动项目中使用 jar 作为依赖项。得到这个错误

这看起来像这个类被加载了两次。首先在 sprint 启动应用程序启动时,然后在调用 a 方法时再次使用该 xxx.class。

LaunchedURLClassLoader 用作 url 类加载器,我假设它在启动时加载类/jar。为什么它试图再次加载一个类?

0 投票
1 回答
36 浏览

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,

0 投票
0 回答
6 浏览

linker - 不使用变量时外部不工作

我创建了一个名为 extern 的变量x,并且该变量x在任何其他文件中都不存在,因此,链接器应该给我一个错误。如果我声明 extern 变量 ( extern int x;) 而没有实际使用该变量,它不会给我任何错误,但是当我使用该变量时,它会给我一个错误。为什么我只放声明时链接器不给我一个错误?

无错误:

给我错误: