0

我正在尝试从 JAR 文件加载一个类。该类称为 BasicLineFormatter。因为我使用 java -cp 命令使用 shell 脚本来说明类。BasicLineFormatter 类存在于我的两个 jar 中,一个是 com.ibm.jaxws.thinclient_8.5.0.jar,另一个是第三方 jar。但我正在尝试从其中一个罐子(第三方罐子)中加载它。所以我添加了这段代码:

JarFile jarFile = new JarFile("Path to JAR");
Enumeration<JarEntry> enumeration = jarFile.entries();

URL[] urls = { new URL("jar:file:" + "Path to JAR" + "!/") };
URLClassLoader cl = URLClassLoader.newInstance(urls);

System.out.println("Stating to load");
while (enumeration.hasMoreElements()) {
    JarEntry je = enumeration.nextElement();
    if(je.isDirectory() || !je.getName().endsWith(".class")){
        continue;
    }
    String className = je.getName().substring(0,je.getName().length()-6);
    if (className.contains("BasicLineFormatter")) {
        System.out.println("Class Name: " + className);
        className = className.replace('/', '.');
        Class c = cl.loadClass(className);
    }

}

但在那之后我仍然得到错误:

Exception in thread "main" java.lang.NoSuchFieldError: org/apache/http/message/BasicLineFormatter.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 java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:236)
at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:82)
at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:95)
at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:104)
at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:62)
at java.lang.J9VMInternals.initializeImpl(Native Method)
at java.lang.J9VMInternals.initialize(J9VMInternals.java:236)

你能告诉我这里发生了什么,或者我做错了什么。

4

0 回答 0