55 votes

Utilisation de classes de soleil internes avec javac

Existe-t-il un moyen de désactiver les restrictions de javac 1.6.0_22 qui m'empêchent d'utiliser des classes internes JRE comme sun.awt.event.* ?

Je ne cherche pas :

  1. une explication pourquoi il est interdit.
  2. suggestion d'utiliser différentes classes
  3. suggestion d'utiliser la réflexion
  4. suggestion d'utiliser ecj / eclipse

Je veux juste savoir si c'est possible ou non, et si c'est alors comment.

97voto

Marcin Wisnicki Points 1193

J'ai moi-même trouvé la réponse.

Lorsque javac compile du code, il n'est pas lié à rt.jar par défaut. Au lieu de cela, il utilise le fichier de symboles spéciaux lib/ct.sym avec des talons de classe.

Étonnamment, ce fichier contient de nombreuses classes de soleil internes, mais pas toutes. Dans mon cas, l'une de ces classes plus internes que d'habitude était sun.awt.event.IgnorePaintEvent .

Et la réponse à ma question est: javac -XDignore.symbol.file

C'est ce que javac utilise pour compiler rt.jar .

0voto

Stephen C Points 255558

Normalement, cela ne produit qu'un message d'avertissement; par exemple

 [javac] /media/disk/opensso2/opensso/products/federation/openfm/source/com/sun/identity/wss/xmlsig/WSSSignatureProvider.java:46: warning: com.sun.org.apache.xpath.internal.XPathAPI is Sun proprietary API and may be removed in a future release
[javac] import com.sun.org.apache.xpath.internal.XPathAPI;
 

Vous avez peut-être demandé au compilateur Java de traiter les avertissements comme des erreurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X