Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347

    [JAVA - da sorgente a bytecode]

    Buongiorno a tutti,
    avrei questa problematica:
    ho una classe che prende una stringa come parametro di input che rappresenta il sorgente di una classe Java.

    Il problema è che come output dovrei generare il suo Bytecode, quindi in teoria compilarla.

    qualcuno mi sa indicare la strada per una possibile soluzione?

    Saluti
    nh

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JAVA - da sorgente a bytecode]

    Originariamente inviato da newhook
    ho una classe che prende una stringa come parametro di input che rappresenta il sorgente di una classe Java.

    Il problema è che come output dovrei generare il suo Bytecode, quindi in teoria compilarla.

    qualcuno mi sa indicare la strada per una possibile soluzione?
    La soluzione generica è quella di scrivere la stringa su un file .java e poi usare exec() di Runtime per invocare il tool 'javac' per compilare il sorgente. Chiaramente va prestata attenzione ai path e al "classpath".

    Da Java 6 esiste una API apposita per usare "programmaticamente" il compilatore javac. Vedi la classe javax.tools.ToolProvider che ha il metodo getSystemJavaCompiler(). Personalmente non l'ho mai provata/usata. Valuta tu ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347
    Grande...
    opto per la seconda strada, in quanto non devo creare file fisici di appoggio per poi compilare...
    dovrebbe essere tutto al volo: stringa -> generazione bytecode ->esecuzione....

    Guardo subito javax.tools.ToolProvider e ti farò sapere.

    nel frattempo stavo dando un'okkiata a JavaCC https://javacc.dev.java.net/ ma ancora devo capire se fa al caso mio.

    Thanx
    nh

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da newhook
    opto per la seconda strada
    Come ho detto non l'ho mai usata. Non è banalissima ma nemmeno complicatissima. Se guardi il javadoc di javax.tools.JavaCompiler ci trovi un esempio di classe JavaSourceFromString che è quello che ti serve.

    Originariamente inviato da newhook
    nel frattempo stavo dando un'okkiata a JavaCC https://javacc.dev.java.net/ ma ancora devo capire se fa al caso mio.
    No affatto. JavaCC, data una "grammatica" (che descrive tipicamente un qualche linguaggio), genera sorgenti Java per parsare ed interpretare tale grammatica. Ma non è quello che devi fare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347
    sisi...mi stavo già vedendo tutto...JavaCompiler e compagnia...
    ma già ho i primi problemi...

    JavaCompiler jc = ToolProvider.getSystemJavaCompiler();

    mi ritorna null...

    vabbè, ho iniziato ora...

    thanx, a presto
    nh

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347
    tutto figo...però credo che sia obbligatorio l'uso della JDK mentre io devo usare la JRE 1.5
    mi sa che devo trovare altro...
    grazie ugualmente...
    (il JavaCompiler tornava null proprio perchè non puntava alla JDK)



    nh

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347
    no, funziona anche con la jre ma deve essere la 6, no la 5

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da newhook
    tutto figo...però credo che sia obbligatorio l'uso della JDK mentre io devo usare la JRE 1.5
    Ma se tu "sai" che devi compilare a runtime qualcosa (che è un caso molto specifico) ..... mi pare ovvio che invece un JDK è necessario.

    Originariamente inviato da newhook
    mi sa che devo trovare altro...
    Se non puoi usare la release 6, ok, dimentica ToolProvider & company. Ma un JDK, ripeto, ti serve comunque! Cioè un 'javac' lo devi trovare comunque da qualche parte per avviarlo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347
    è vero, javac ci deve stare...!
    era troppo figo, ma sto vincoli della jre1.5 non ci voleva proprio...

    vabbè, cercherò altro...
    grazie ancora
    nh

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2009
    Messaggi
    347
    ma l'uso di org.apache.jasper?
    mi sembra molto puntato però per jsp.
    te lo conosci?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.