问题标签 [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 投票
0 回答
267 浏览

spring - 尝试使用 JDK11 运行 JBoss EAP 7.2 ear 项目时出现 LinkageError

亲爱的,

我正在尝试从 Java 8 切换到 Java 11,这是一个打包在 EAR 中的应用程序,在 JBoss EAP 7.2 上运行。应用程序 WAR 是一个 Struts2 + Spring 项目。它在 JDK8 上运行良好,但在 11 下,我有以下错误:

它没有链接到类本身,因为如果我删除自动装配这个类的注释,问题就会出现在另一个类上。

更多日志:

有什么提示吗?

0 投票
2 回答
129 浏览

websphere - javax.transaction.* 类的 WebSphere 9 上的 LinkageError

我有一个曾经在许多 Web 服务器(tomcat、jboss、weblogic 和 websphere)上运行良好的 Web 应用程序。但是,现在在 WebSphere 9 上部署时出现错误。

该应用程序包含 jar javax.transaction-api-1.2。它的一些类,例如 ,javax.transaction.xa.XAResource也包含在 Java SE 中,但不是全部。有些是 Java EE 特有的,并且是我的应用程序中的一些 3rd-party 库所必需的。该应用程序始终使用子优先(父最后)类加载器进行部署。当应用程序尝试加载 Oracle JDBC 驱动程序时,WebSphere 9 在启动期间抛出此错误:

请注意,我们实际上并没有在应用程序中使用 XA 事务,而是使用常规事务。

在其他服务器和先前版本的 WebSphere 上,这从来都不是问题。服务器并不关心我们XAResource是从战争内部加载的,即使它之前是在服务器的某个地方加载的。现在 WebSphere 9 不同了,它说应用程序类加载器已经从服务器加载了这个类,但我不知道为什么或何时发生这种情况。

知道如何解决这个问题吗?

0 投票
2 回答
204 浏览

java - Tomcat9 上的 java.lang.LinkageError:java.net.URLClassLoader 尝试了 DefaultTokenServices 的重复类定义

我公司后端应用程序的 war 大小约为 100 MB,因此我们决定将所有 maven 依赖项的范围更改为提供。罐子从 .war 移动到 opt/tomcat/shared/lib 文件夹(根据此指令https://www.mulesoft.com/tcat/tomcat-classpath)。一切都很好,我们使用此配置在此服务器上部署了 2 个后端应用程序。在我们添加第三个类似的后端应用程序后,我们无法在 oauth2 服务中使用登录,因为在日志中我们可以看到以下错误:

前两个应用程序仍然可以正常工作,但第三个不能。在每次部署之前,我们都会清除 tomcat 的工作文件夹。我们使用 Java 11 SpringBoot2、OpenJDK 11、Tomcat 9.0.21。类 DefaultTokenServices 位于 spring-security-oauth2-2.3.5.RELEASE.jar 中,我们将其与其他 jar 一起放在 opt/tomcat/shared/lib 文件夹中。

0 投票
0 回答
81 浏览

java - SpringBoot:如何正确处理此链接错误?

我希望你能帮助我.. 我有一个 spring-boot 应用程序,它在一个文件夹中加载一些 jar(带有带注释的类和方法@Test@TestFactory,并在 JSON 中加载所有 jar 名称 - 类名称 - 方法Test名称。当我调用 get 服务时/getTestList,我会像这样查看这个 json,例如:

{jarFile:{classFileName:{methodTestName1:"xxxx",methodTestName2:"yyy"},{classFileName2:{methodTestName1:"xxxx",methodTestName2:"yyy"} }

这是Controller.class:

使用方法getAllTests()我首先像外部库一样加载 jar,然后使用一个用于迭代所有 jarsFile,另一个用于迭代所有类,最后使用另一个用于使用注释@Test@TestFactory.

在我的 Windows 电脑上它可以正常工作,但是当我打包项目并将这个 jar 放在 Linux 服务器上时,我遇到了这个错误:

我试图从 spring-boot 依赖项中排除 Jackson,但 Response ofgetTestList()不起作用。其他 Jars 文件也使用了 Jackson 库。

这是我的 pom.xml:pomxml

请帮助我.. 我累了 3 天。:-P 谢谢和

问候朋友..

0 投票
0 回答
406 浏览

java - JVM LinkageError 和 Signature 区别

我有一个从类路径中的一组 jar 开始的 tomcat 应用程序。

假设启动后使用ClassA、ClassB、ClassC。因此,这些类被加载到 JVM 中。所有这些类都是从同一文件夹中的不同 jar 加载的。

现在,我可以ClassB.method()从 ClassA 使用。它完美地工作。

现在,我在运行时将来自不同文件夹的更多 jar 添加到类路径中。在这些罐子里,还有 ClassB。ClassB 在启动期间加载,这是不同的版本。

现在,当我ClassB.method()从 ClassA 使用时,我得到了 LinkageError。

即使两个 jar 版本相同,我也会收到错误消息。

当新的 jar 在运行时添加到 JVM 时,旧加载的类会发生什么?ClassA 是否存储它首先加载的 ClassB 版本?如果没有,JVM如何知道存在签名差异并抛出错误?

用于在运行时添加 jar 的代码

联动错误

java.lang.LinkageError: 加载器约束违规:当解析方法“org.apache.http.client.methods.HttpPost.setEntity(Lorg/apache/http/HttpEntity;)V”类加载器(java/net/URLClassLoader 的实例) 的当前类 com/application/rest/tokens/TokenHandler 和方法定义类 org/apache/http/client/methods/HttpEntityEnclosureRequestBase 的类加载器(sun/misc/Launcher$AppClassLoader 的实例)签名中使用的 org/apache/http/HttpEntity 类型的不同 Class 对象

0 投票
1 回答
459 浏览

java - WebSphere 中 LinkageError 导致的 ServiceConfigurationError

我有一个部署在 WebSphere 9.0.5.2 上的应用程序,我想在其中使用 CXF 进行 Web 服务调用,我得到了这个 This ServiceConfigurationError

在堆栈跟踪的下方,我看到这是由 LinkageError 引起的

我知道这可能是由对QNameor具有不同定义的多个库引起的JAXBContext,但我想我已经排除了这些。

我也知道 WebSphere 有它自己的 JAX-WS 和它自己的 ServiceDelegate.createDispatch 方法签名,我已经尝试DisableIBMJAXWSEngine按照此处的说明在 WebSphere 中设置为 true

使用第三方 JAX-WS Web 服务引擎

我仍然无法摆脱错误,并且对于接下来要尝试什么感到不知所措。任何建议表示赞赏!

0 投票
1 回答
492 浏览

rust - libgcc 和 Rust 系统库中 `__udivti3' 的多重定义

我正在尝试将一些可执行文件(使用 gcc 编译)与使用cargo build.

cargo 从用 Rust 语言编写的代码生成 .a 和 .so 库。

联动错误为:

据我了解,一些低级处理器数学函数在我的 libgcc 和 RUST 系统库 compiler_builtins-0.1.25/src/int/udiv.rs 中定义了两次的问题可能有人知道如何解决这个问题?

如果我将可执行文件与库作为共享对象链接,则链接成功,但我需要使用静态库进行编译!(货物构建同时生成.so和.a)

该线程(将 Rust staticlib 与嵌入式 C 程序链接时出现“`memcmp 的多重定义”错误)对我没有帮助。

0 投票
1 回答
622 浏览

python - 使用 SWIG 的 CPP 到 Python 失败并出现“错误 LNK2001:未解析的外部符号”

我正在尝试创建最简单的 cpp-to-python SWIG 示例。
我有一个类(SwigTest),由文件组成cpph其中有一个公共方法swig_test_connection
swig 包装器生成(*.cxx*.py文件)开箱即用,
但是当我尝试构建(使用setup.py)时,我收到链接错误:
LINK : error LNK2001: unresolved external symbol PyInit__swig_test

请参阅下面的详细重新制作步骤。

我按照以下说明进行操作:

我觉得我在这里缺少一些基本的东西,所以我将不胜感激任何建议。

系统详情

我使用的是 Windows 10、python 3.6.7 和 VS 2019。
我还在一台干净的机器上尝试了 Windows 10、python 3.6.7 和 VS 2017,并得到了相同的结果。

详细的重现步骤

我创建了一个SwigTest包含一个公共成员方法的类()swig_test_connection

swig_test.h:

swig_test.cpp:

我还创建了一个swigtest.i文件:
swigtest.i

我将所有这些文件保存在同一个文件夹下:

接下来,我通过运行以下命令创建了 SWIG 包装文件:
swig -python -c++ swigtest.i

这生成了 2 个 SWIG 包装器文件:

最后一步是创建setup.py
setup.py

最后,我尝试构建模块:
python setup.py build_ext --inplace

这产生了以下错误:

完整的错误堆栈跟踪:

任何帮助将不胜感激,
谢谢,
萨尔

0 投票
0 回答
259 浏览

java - Javassist:如何解决重复的类异常?

使用Javassist我正在尝试将一行代码插入方法的主体。这是对intellij-IDE. 尝试这样做时出现以下错误:

原因:java.lang.LinkageError: loader com.intellij.util.lang.UrlClassLoader @d2cc05a 尝试为 com.intellij.ui.components.labels.LinkLabel 重复类定义。(com.intellij.ui.components.labels.LinkLabel 位于加载器 com.intellij.util.lang.UrlClassLoader @d2cc05a 的未命名模块中,父加载器“平台”)

这意味着我试图修改的类已经被 Java 类加载器加载了(至少我喜欢这样想..)。代码示例如下:

作为参考,这里是访问的类:intellij 链接


几年前,Rafael Winterhalter评论了一个类似的问题(链接)。不幸的是,我的知识Javassist限制了我找到​​合适的解决方案。

关于如何解决这个问题的任何想法?


更新:可以在这里找到一个最小的、可重复的示例:github 链接

0 投票
0 回答
515 浏览

java - Java .jar 文件不运行,但它在 VSCode 中运行

我正在使用 VSCode。在 VScode 中,我按 F5 运行我的 java 应用程序,它运行成功。问题是当我单击导出 jar 按钮时,它会构建 .jar 文件,但是当我双击 .jar 文件时,它不会运行。我没有使用任何构建工具。我也在使用java swing。

当我从控制台运行时,它输出: