2012-10-25 16 views
15

Voglio compilare il codice Java che utilizza pacchetti obsoleti alcuni di Java "sole" e Gradle compilare operazione non è riuscita con questo erroreCome superare "il pacchetto com.sun.xml.internal.xxx non esiste" durante la compilazione con Gradle?

error: package com.sun.xml.internal.ws.developer does not exist 

Sto usando Hotspot JDK e posso vedere questo pacchetto lì (in modo che esiste realmente - nel file di rt.jar) ho anche provato ad aggiungere rt.jar stesso in Gradle dipendenze:

compile files('C:/Program Files/Java/jdk1.7.0_05/jre/lib/rt.jar') 

, ma senza alcun effetto

qui è uscita la mia Gradle -v:

------------------------------------------------------------ 
Gradle 1.2 
------------------------------------------------------------ 

Gradle build time: Streda, 2012, september 12 10:46:02 UTC 
Groovy: 1.8.6 
Ant: Apache Ant(TM) version 1.8.4 compiled on May 22 2012 
Ivy: 2.2.0 
JVM: 1.7.0_05 (Oracle Corporation 23.1-b03) 
OS: Windows 7 6.1 amd64 

Ho anche provato ad aggiungere jaxws-rt.jar al classpath - alcun effetto né

Vorrei davvero apprezzare alcun aiuto

grazie

+0

È possibile che tali pacchetti non facciano più parte di JDK 7 su AMD64. – duffymo

+0

no, quando decomprimo rt.jar, posso farlo lì – user1746915

+0

Quindi dovrebbe essere nel CLASSPATH. – duffymo

risposta

12

E 'l'intento di Oracle che queste classi siano inaccessibili in fase di compilazione.

Vedere la risposta a this javac bug report.

Per una soluzione probabile, vedere Using internal sun classes with javac. L'opzione javac -XDignore.symbol.file dovrebbe risolvere questo problema, ma io sono un gradle newb e non vedo come inviarlo a gradle's JavaCompile. La mia ipotesi migliore è

apply plugin: 'java' 
    compileJava.options.useAnt = true 
    compileJava.options.compilerArgs << "-XDignore.symbol.file" 

Per inciso, ct.sym (di cui il link) sembra essere un file jar che elenca, come stub classe, tutte le classi accessibili.

+0

Gradle non usa un caricatore di classi per questo, e non lo fa t escludere qualsiasi cosa Invoca semplicemente l'API del compilatore Java con tutte le informazioni disponibili (ad esempio il percorso della classe di compilazione). Credo che sia il compilatore Java (API) che non consente l'uso di alcuni pacchetti JDK interni. Ecco un caso segnalato in cui l'aggiunta esplicita di rt.jar risolve il problema: http://forums.gradle.org/gradle/topics/package_sun_text_normalizer_does_not_exist –

+0

Peter: L'ho provato su un nuovo progetto (per essere sicuro di non riutilizzare il mio vecchio errori) e ancora non funziona :( – user1746915

+0

anche quando costruisco il mio progetto in Idea, funziona – user1746915

Problemi correlati