I want to use apache httpclient to interact with webservices. In particular, I use http://mirror.arcor-online.net/www.apache.org//httpcomponents/httpclient/binary/httpcomponents-client-4.3-bin.zip
So, in MATLAB, I load all the included banks in the javaclasspath, and then I can create a client instance to work with:
In MATLAB 2007b and 2011b (these are the versions I have):
client = org.apache.http.impl.client.HttpClients.createDefault() client = org.apache.http.impl.client.InternalHttpClient@1e89831
In 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)
This really bothers me, since the code in 2011b and 2012b is identical, all jars are loaded, and both Java versions coming with MATLAB are also identical (1.6.0_17-b04). So I really donβt understand why classes became inaccessible in 2012.
I tried playing with the matlab class loader, but this confuses me even more:
>> 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
I also tried putting all jar files in a static classpath, which also had no effect. I am glad about any ideas on how to solve this problem and how to find the actual cause of the problem ...
source share