当前位置: 首页 > 知识库问答 >
问题:

MATLAB 2012中的Apache HttpClient

明安阳
2023-03-14

我想使用apache httpclient与webservices进行交互。特别是我使用的http://mirror.arcor-online.net/www.apache.org//httpcomponents/httpclient/binary/httpcomponents-client-4.3-bin.zip

因此,在MATLAB中,我将所有包含的JAR加载到javaclasspath中,然后我可以创建到客户端实例来使用:

在MATLAB2007b和2011b(这些是我拥有的版本):

client = org.apache.http.impl.client.HttpClients.createDefault()
client =

org.apache.http.impl.client.InternalHttpClient@1e89831

在2012b:

>> client = org.apache.http.impl.client.HttpClients.createDefault()

Java exception occurred:
java.lang.NoSuchFieldError: INSTANCE

    at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52)

    at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56)

    at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46)

    at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:72)

    at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:84)

    at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:59)

    at
    org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:487)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:147)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:136)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:112)

    at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:710)

    at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58)


>> client = org.apache.http.impl.client.HttpClients.createDefault()
Java exception occurred:
java.lang.NoClassDefFoundError: Could not initialize class org.apache.http.impl.conn.ManagedHttpClientConnectionFactory

    at
    org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:487)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:147)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:136)

    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:112)

    at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:710)

    at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58)

这真的让我头疼,因为2011b和2012b中的代码是相同的,所有jar都被加载了,而且MATLAB附带的两个Java版本也是相同的(1.6.0\u 17-b04)。所以我真的不明白为什么2012b的课程变得不可下载。

我尝试使用matlab classloader,但这让我更加困惑:

>> jloader =  com.mathworks.jmi.ClassLoaderManager.getClassLoaderManager();
>> jloader.loadClass('org.apache.http.impl.conn.ManagedHttpClientConnectionFactory')
Java exception occurred:
java.lang.NoClassDefFoundError: Could not initialize class org.apache.http.impl.conn.ManagedHttpClientConnectionFactory

    at java.lang.Class.forName0(Native Method)

    at java.lang.Class.forName(Unknown Source)

    at com.mathworks.jmi.ClassLoaderManager.loadClass(ClassLoaderManager.java:440)


>> jloader.getCurrentClassLoader.loadClass('org.apache.http.impl.conn.ManagedHttpClientConnectionFactory')

ans =

class org.apache.http.impl.conn.ManagedHttpClientConnectionFactory

我还尝试将所有jar文件放到静态类路径上——这也没有任何效果。很高兴有任何关于如何解决这个问题或如何找到问题的实际原因的想法......

共有1个答案

郭浩穰
2023-03-14

类路径上的httpclient和httpcore版本不匹配。您似乎只升级了httpclient,但没有升级其依赖项。您可以在Apache HttpClient项目页面上看到依赖项列表。http://hc.apache.org/httpcomponents-client-4.3.x/httpclient/dependencies.html

您还应该确保在类路径上没有多个版本的依赖项。Matlab2012b似乎已经有了httpcore的版本,这就是为什么您会遇到这种冲突。

 类似资料:
  • 我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?

  • 我已经为android Studio创建了一个webview应用程序。但没有加载web URL。错误为NET::ERR_ACCESS_DENIED。有谁能帮忙吗

  • 我有一个使用Java Version8的Spring和Maven的项目。当我运行maven update时,它适用于Java9或更高版本,当我编译它时,它适用于Java8。我注意到了这一点,因为用Maven更新会将一个特定的类更改为Java9,而我无法导入这个类。 这个类是:javax.annotation.generated(Java8)。 这是要导入的类。但是,当我进行maven更新时,文件的

  • 当应用程序启动EncryptionBootstrapConfiguration无法自动装配我的自定义TextEncryptor-https://github.com/spring-cloud/spring-cloud-commons/blob/cde7c7f3118382490c28776f66e0a56f248141fd/spring-cloud-context/src/main/java/or

  • 我有一个问题,找出我的源代码中的错误。 有什么办法可以解决它吗? 我的代码中抛出了“ArrayIndexOutOfBoundsException”,但我无法找到它的位置。 android studio中的logcat:

  • RISC-V 与中断相关的寄存器和指令 [info] 回顾:RISC-V 中的机器态(Machine Mode,机器模式,M 模式) 是 RISC-V 中的最高权限模式,一些底层操作的指令只能由机器态进行使用。 是所有标准 RISC-V 处理器都必须实现的模式。 默认所有中断实际上是交给机器态处理的,但是为了实现更多功能,机器态会将某些中断交由内核态处理。这些异常也正是我们编写操作系统所需要实现的

  • 加载EGL入口点时出错。 Java运行时环境检测到一个致命错误: exception_access_visultion(0xC0000005)在pc=0x000000000000,pid=22096,tid=21896 这是错误日志文件中的线程(完整文件太长):------------------------------------------------- 非常感谢你的回答。埃吉尔

  • java.lang.ClassCastException:com.kk.tutorial.domain.dtos.employeedTo类不能强制转换为com.kk.tutorial.domain.dtos.employeedTo类(com.kk.tutorial.domain.dtos.employeedTo位于加载器'app'的未命名模块中;com.kk.tutorial.domain.dto