2010-10-30 17 views
10

Qualcuno può dirmi che l'opzione target jsr14 di javac sarà ancora disponibile con JDK7/8?versione target java del compilatore "jsr14" con JDK7/8

Say,

$ javac -source 1.5 -target jsr14 Hello.java 
+0

quale è giusto? "sarà ancora" o "sarà ancora". Scusate. Non parlo inglese quando sono sveglio. :) –

+0

Quale versione di destinazione "jsr14"? Vuoi dire -target 1.4? – EJP

+0

controlla questo EJP. http://www.ibm.com/developerworks/java/library/j-jtp02277.html –

risposta

4

L'ultimo pacchetto di origine OpenJDK (openjdk-7-ea-src-b130-18_feb_2011.zip) contiene ancora la bandiera nella fonte (langtools/src/share/classes/com/sun/tools/javac/jvm/Target.java), ma non è mai stato sostenuto, in modo da fare affidamento su di essa è una cattiva idea.

Perché ne hai bisogno?

+0

Perché ero solito scrivere 1.5 codici e compilare per 1.4 target per i miei STBox Java ME. –

+4

@Jin: utilizzare uno degli obiettivi supportati e utilizzare qualcosa come [Retroweaver] (http://retroweaver.sourceforge.net/) o [Retrotranslator] (http://retrotranslator.sourceforge.net/) per pubblicare -prestare il risultato. –

+0

Ma jsr14 era perfetto per questo ... –

4

Quella bandiera è stata abbandonata dalle fasi beta di 1.5. È stato incluso solo per consentire al compilatore 1.5 beta di bypassare il controllo/analisi generici per impostazione predefinita mentre le specifiche generiche non sono state finalizzate. Una volta rilasciata la 1.5, quella bandiera divenne priva di significato. Le nuove versioni del compilatore potrebbero non dare errori nell'incontrarlo ma molto probabilmente lo ignoreranno silenziosamente.

12

Utilizziamo in modo approfondito -jsr14 in OSGi perché ci consente di utilizzare i generici nella nostra API, ma continuiamo a distribuirli in ambienti 1.4, che sono ancora popolari in embedded. Purtroppo, lo ha reso JDK 7 non retrocompatibile con Java 6 e 5. Javac 1.7 ignora le informazioni generiche effettivamente presenti nei file JAR. Per fortuna non c'è nessun problema in fase di esecuzione dato che comunque queste informazioni vengono ignorate. E non è come se questa fosse una caratteristica non documentata ...

Sfortunatamente, le persone davanti spesso hanno pochissima considerazione per le persone che non possono semplicemente aggiornarsi all'ultimo e il più grande. Suppongo che Oracle non si preoccupi più dei mercati integrati.

Probabilmente ora dovremo spedire due JAR, uno per l'embedded e uno per JDK 7. Sucks.

Questa è la segnalazione di bug abbiamo presentato: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7078419

+0

Eclipse P2 utilizza il target jsr14 per un motivo simile. Sfortunatamente, non è vero che non ci siano problemi in fase di runtime. OpenJDK esplode quando si usa il reflection su tipi che sono stati compilati con target jsr14. Questo è particolarmente problematico quando si utilizza Spring DM o Blueprint come visto qui: https://gist.github.com/1251497 – mpilquist

+1

Ho eseguito questo problema OSGi. C'è un rapporto bug OSGi per cui posso votare? Nota: la risoluzione per il bug report JDK è: Not a Defect Deve essere riparato sul lato OSGi allora. – Puce

+0

Ho archiviato un problema qui: https://issues.apache.org/jira/browse/FELIX-3455 Si prega di votare per questo. – Puce

Problemi correlati