【发布时间】:2018-05-20 16:31:48
【问题描述】:
我正在尝试编写一个用 java 编写的 openHab2 绑定。我是一个 C++ 人,Java 对我来说是新手。有问题的代码如下所示:
import org.apache.http.client.CredentialsProvider;
import org.apache.http.impl.client.BasicCredentialsProvider;
...
@Override
public void initialize() {
...
CredentialsProvider credsProvider = new BasicCredentialsProvider();
...
}
我将 org.apache.httpcomponents.htpclient_4.5.2.v20170210-0925.jar 作为外部 jar 添加到构建路径,程序构建没有任何问题。 这个项目使用了我也不熟悉的Maven作为构建系统,所以我添加了:
<dependencies>
<dependency>
<groupId>org.apache.httpcomponent</groupId>
<artifactId>httpclient</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
到 pom.xml。
当我运行系统时出现此错误:
2018-05-20 09:51:38.574 [错误] [.i.c.AbstractInvocationHandler:101] - 调用方法“ThingHandler.initialize()”时发生错误 'org.openhab.binding.testbinging.internal.TestBingingHandler@728656fc': org/apache/http/impl/client/BasicCredentialsProviderjava.lang.NoClassDefFoundError: org/apache/http/impl/client/BasicCredentialsProvider 在 org.openhab.binding.testbinging.internal.TestBingingHandler.initialize(TestBingingHandler.java:63)
2018-05-20 09:51:38.576 [错误] [.c.thing.internal.ThingManager:700] - 初始化事物“testbinging:sample:0ac3dcf3”的处理程序时发生异常: org/apache/http/impl/client/BasicCredentialsProviderjava.lang.NoClassDefFoundError: org/apache/http/impl/client/BasicCredentialsProvider
在我未经训练的眼睛看来,运行时类路径设置不正确。
我正在使用 eclipse-oxygen 版本 Oxygen.3a Release(4.7.3a),Build id: 20181405.1200 和 $ mvn -版本 阿帕奇 Maven 3.3.9 Maven 主页:/usr/share/maven Java 版本:1.8.0_171,供应商:甲骨文公司 Java 主页:/usr/lib/jvm/java-8-openjdk-amd64/jre
谢谢, 史蒂夫 默认语言环境:en_US,平台编码:UTF-8 操作系统名称:“linux”,版本:“4.9.0-5-amd64”,arch:“amd64”,家族:“unix”
【问题讨论】:
-
所以你两个都做了,添加了 JAR 并使用了 Maven?尝试删除 JAR 并仅使用 Maven(接口和实现 JAR 之间可能存在版本不匹配)。你究竟是如何运行系统的?
-
我删除了外部罐子,但问题仍然存在。请参阅下面答案中的 cmets。
标签: java eclipse maven openhab