问题标签 [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.
spring - 尝试使用 JDK11 运行 JBoss EAP 7.2 ear 项目时出现 LinkageError
亲爱的,
我正在尝试从 Java 8 切换到 Java 11,这是一个打包在 EAR 中的应用程序,在 JBoss EAP 7.2 上运行。应用程序 WAR 是一个 Struts2 + Spring 项目。它在 JDK8 上运行良好,但在 11 下,我有以下错误:
它没有链接到类本身,因为如果我删除自动装配这个类的注释,问题就会出现在另一个类上。
更多日志:
有什么提示吗?
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 不同了,它说应用程序类加载器已经从服务器加载了这个类,但我不知道为什么或何时发生这种情况。
知道如何解决这个问题吗?
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 文件夹中。
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 谢谢和
问候朋友..
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 对象
java - WebSphere 中 LinkageError 导致的 ServiceConfigurationError
我有一个部署在 WebSphere 9.0.5.2 上的应用程序,我想在其中使用 CXF 进行 Web 服务调用,我得到了这个 This ServiceConfigurationError
在堆栈跟踪的下方,我看到这是由 LinkageError 引起的
我知道这可能是由对QName
or具有不同定义的多个库引起的JAXBContext
,但我想我已经排除了这些。
我也知道 WebSphere 有它自己的 JAX-WS 和它自己的 ServiceDelegate.createDispatch 方法签名,我已经尝试DisableIBMJAXWSEngine
按照此处的说明在 WebSphere 中设置为 true
我仍然无法摆脱错误,并且对于接下来要尝试什么感到不知所措。任何建议表示赞赏!
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 的多重定义”错误)对我没有帮助。
python - 使用 SWIG 的 CPP 到 Python 失败并出现“错误 LNK2001:未解析的外部符号”
我正在尝试创建最简单的 cpp-to-python SWIG 示例。
我有一个类(SwigTest
),由文件组成cpp
,h
其中有一个公共方法swig_test_connection
。
swig 包装器生成(*.cxx
和*.py
文件)开箱即用,
但是当我尝试构建(使用setup.py
)时,我收到链接错误:
LINK : error LNK2001: unresolved external symbol PyInit__swig_test
请参阅下面的详细重新制作步骤。
我按照以下说明进行操作:
- http://www.swig.org/Doc1.3/Python.html
- https://david-estevez.gitbooks.io/tutorial-swig/02_wrapping_simple_c++_library.html
- http://web.mit.edu/svn/src/swig-1.3.25/Examples/python/class/
我觉得我在这里缺少一些基本的东西,所以我将不胜感激任何建议。
系统详情
我使用的是 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
这产生了以下错误:
完整的错误堆栈跟踪:
任何帮助将不胜感激,
谢谢,
萨尔
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 链接
java - Java .jar 文件不运行,但它在 VSCode 中运行
我正在使用 VSCode。在 VScode 中,我按 F5 运行我的 java 应用程序,它运行成功。问题是当我单击导出 jar 按钮时,它会构建 .jar 文件,但是当我双击 .jar 文件时,它不会运行。我没有使用任何构建工具。我也在使用java swing。
当我从控制台运行时,它输出: