java.lang.ClassCastException: com.soleil.net.le protocole ssl.interne.www.le protocole.https.HttpsURLConnectionOldImpl ne peut pas être lancé à javax.net.le protocole ssl.HttpsURLConnection
J'ai essayé ce code dans mon Netbeans 7.4 et il fonctionne sans problème
import java.io.IOException;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
public class JavaApplication148 {
public static void main(String[] args) throws IOException {
URL url = new URL("https://redmine.ackee.cz/time_entries.xml");
HttpsURLConnection httpCon = (HttpsURLConnection) url.openConnection();
}
}
Cependant alors que je l'ai utilisé dans eclipse dans mon maven-driven projet et il le jette exception suivante :
java.lang.ClassCastException: com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl
cannot be cast to javax.net.ssl.HttpsURLConnection
C'est la classe suivante dans mon projet maven qui déclenche une erreur
package cz.ackee.redmine.commands;
import java.io.IOException;
import java.net.URL;
import javax.net.ssl.HttpsURLConnection;
public abstract class RedmineCommand {
public void write(String xmlAddress, String text, String requestMethod) throws IOException{
URL url = new URL("https://redmine.xxx.cz/time_entries.xml");
HttpsURLConnection httpCon = (HttpsURLConnection) url.openConnection(); //this line throws exception
}
}
C'est mon 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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cz.ackee</groupId>
<artifactId>pan-unicorn-bot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Pan Unicorn Bot</name>
<description>Pan unicorn IRC Bot</description>
<repositories>
<repository>
<id>apache-snapshots</id>
<url>http://repository.apache.org/snapshots/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-cli</artifactId>
<version>1.3-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.taskadapter</groupId>
<artifactId>redmine-java-api</artifactId>
<version>1.23</version>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<groupId>org.apache.maven.plugins</groupId>
<version>2.3</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</configuration>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<descriptors>
<descriptor>/src/main/assembly/binary.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<archive>
<index>true</index>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>cz.ackee.unicorn.PanUnicornMain</mainClass>
</manifest>
<manifestEntries>
<mode>development</mode>
<url>${project.url}</url>
<key>value</key>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
</project>
Une idée, pourquoi il ne le compiler et de l'exécuter sans problème sur netbeans et pourquoi il ne va pas bien sur maven-eclipse projet?
(Je compile en ligne de commande à l'aide de mvn package
, je le lance via eclipse)
Je suppose qu'il ya une différence dans votre classpath.
classpath pour quoi exactement?
classpath pour quoi exactement?
OriginalL'auteur libik | 2014-05-07
Vous devez vous connecter pour publier un commentaire.
La solution est de changer cette ligne
dans cette ligne
S'il vous plaît ne pas utiliser cette solution. C'est une solution de contournement en utilisant un gestionnaire de mise en œuvre. Cela empêche votre code d'exécution sur une autre JRE/JDK (vendeur et/ou de la version). Plus d'infos ici: community.oracle.com/thread/1535882 et community.oracle.com/thread/1150553
OriginalL'auteur libik
Si vous utilisez simplement
HTTP
protocole (pasHTTPS
), au lieu de:Utiliser ceci:
Il suffit de déposer la "s" in "HttpsURLConnection"
Noter que cette solution ne fonctionne que pour le protocole HTTP (pas de HTTPS)
Vous êtes les bienvenus, @Aditya
Upvoted parce que c'est ce que je cherchais. Mais cela ne fonctionne que si le protocole est
http
, par exemple:http://www.mywebsite.com
(avis lahttp
), et non dans un protocole sécuriséhttps
(comme l'OP cas).OriginalL'auteur Realdo Dias
Il a appelé si l'url commence par "https"
utilisation netty-3.9.2 > .jar pour résoudre ce problème
Lorsque vous utilisez cette netty.jar. le processus d'appel post changé.
http://dl.bintray.com/netty/downloads/netty-3.9.12.Final.tar.bz2
OriginalL'auteur Sachin Panchal