Ich entwickle eine Java EE Webanwendung.Apache httpclient 4.3.1 java.lang.NoSuchFieldError: INSTANZ
hier ist mein pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>bitcoin</groupId>
<artifactId>bitcoin</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Chens Bitcoin Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Define the version of the JBoss BOMs we want to import to specify tested stacks. -->
<version.jboss.bom>1.0.5.CR6</version.jboss.bom>
</properties>
<repositories>
<repository>
<id>prime-repo</id>
<name>Prime Repo</name>
<url>http://repository.primefaces.org</url>
</repository>
</repositories>
<dependencyManagement>
<dependencies>
<!-- Define the version of JBoss' Java EE 6 APIs we want to use -->
<!-- JBoss distributes a complete set of Java EE 6 APIs including
a Bill of Materials (BOM). A BOM specifies the versions of a "stack" (or
a collection) of artifacts. We use this here so that we always get the correct
versions of artifacts. Here we use the jboss-javaee-6.0-with-security stack
(you can read this as the JBoss stack of the Java EE 6 APIs with Security).
You can actually use this stack with any version of JBoss AS that implements
Java EE 6, not just JBoss AS 7! -->
<dependency>
<groupId>org.jboss.bom</groupId>
<artifactId>jboss-javaee-6.0-with-security</artifactId>
<version>${version.jboss.bom}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
<!--<dependency>-->
<!--<groupId>org.jboss.spec.javax.faces</groupId>-->
<!--<artifactId>jboss-jsf-api_2.2_spec</artifactId>-->
<!--<version>2.2.0</version>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>com.sun.faces</groupId>-->
<!--<artifactId>jsf-spi</artifactId>-->
<!--<version>1.0</version>-->
<!--</dependency>-->
<!-- Rewrite -->
<dependency>
<groupId>org.ocpsoft.rewrite</groupId>
<artifactId>rewrite-servlet</artifactId>
<version>2.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.ocpsoft.rewrite</groupId>
<artifactId>rewrite-config-prettyfaces</artifactId>
<version>2.0.8.Final</version>
</dependency>
<dependency>
<groupId>org.omnifaces</groupId>
<artifactId>omnifaces</artifactId>
<version>1.6</version>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3</version>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>3.5</version>
</dependency>
<!-- Data time management -->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.3.1</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<!-- Import the PicketLink API, we deploy this as library with the application,
and can compile against it -->
<dependency>
<groupId>org.picketlink</groupId>
<artifactId>picketlink-core-api</artifactId>
</dependency>
<!-- Import the PicketLink implementation, we deploy this as library with the application,
but can't compile against it -->
<dependency>
<groupId>org.picketlink</groupId>
<artifactId>picketlink-core-impl</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<finalName>bitcoin</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>org.jboss.as.plugins</groupId>
<artifactId>jboss-as-maven-plugin</artifactId>
<version>7.4.Final</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>${endorsed.dir}</outputDirectory>
<silent>true</silent>
<artifactItems>
<artifactItem>
<groupId>javax</groupId>
<artifactId>javaee-endorsed-api</artifactId>
<version>7.0</version>
<type>jar</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
ich eine Methode Httpclient zu erstellen, funktioniert es gut allein, aber Problem hat, wenn von JSF-Seite aufrufen:
public void doSth() {
......
HttpClient httpclient = HttpClientBuilder.create().build();
......
}
Diese Methode wird von commonbutton auf der JSF-Seite aufgerufen, wenn auf die Schaltfläche geklickt wurde, nachdem der folgende Fehler aufgetreten ist:
Caused by: java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52) [httpcore-4.3.jar:4.3]
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56) [httpcore-4.3.jar:4.3]
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46) [httpcore-4.3.jar:4.3]
......
gegoogelt es scheint Httpclient jar-Datei Konflikt mit einer anderen Klasse hat, aber ich kann das man wirklich nicht herausfinden, und alle Abhängigkeiten in pom notwendig.
BTW, ich benutze WildFly 8 CR als Server.
Vielen Dank im Voraus.
Riecht sehr ähnlich wie Sie haben zwei verschiedene Versionen des httpclient in Ihrem Klassenpfad. Haben Sie überprüft, ob WildFly einen httpclient enthält? Ansonsten zieht möglicherweise eine Ihrer Abhängigkeiten ihren eigenen httpclient.Probieren Sie mvn dependency: tree aus und prüfen Sie, ob es zwei Versionen von httpclient gibt. –
Ebenfalls wahrscheinlich nicht verwandt, verwenden Sie das "jboss-javaee-6.0-with-security" im Abhängigkeitsmanagement, aber in Ihren Abhängigkeiten verwenden Sie javaee-web- api-7.0 –