Javac non funziona correttamente

di il
15 risposte

Javac non funziona correttamente

Ho un problema che mi sta facendo impazzire, in teoria io voglio imparare a usare java, ho comprato un libro apposta, si intitola programmazione con java, l'autore e walter savitch, questo libro ha un difetto, non c'e spiegato come installare il compilatore in linux o come comportarsi in eventuali errori. vabe mi sono arrangiato da solo, ma ora il mio problema e che avendo javac, non riesco a far eseguire i miei script messi in una cartella dedicata, riesco solo a farli partire dalla cartella in cui sta javac. ho copiato il codice di esempio del libro:

import java.util.Scanner ;
public class PrimoProgramma {
public static void main(String[] args) {
System.out.println("eseguo la somma di due numeri");
System.out.println("digita i numeri sulla stessa riga");

int n1, n2;

Scanner tastiera = new Scanner(System.in);

n1 = tastiera.nextInt;
n2 = tastiera.nextInt;

System.out.println("ecco il risultato della somma");
System.out.println(n1 + n2);
}
}

ma mi da il seguente errore

root@steve-HP-14-Notebook-PC:~/Scaricati/jdk1.8.0_161/bin# ./javac Nuovo.java
Nuovo.java:2: error: class PrimoProgramma is public, should be declared in a file named PrimoProgramma.java
public class PrimoProgramma {
^
Nuovo.java:11: error: cannot find symbol
n1 = tastiera.nextInt;
^
symbol: variable nextInt
location: variable tastiera of type Scanner
Nuovo.java:12: error: cannot find symbol
n2 = tastiera.nextInt;
^
symbol: variable nextInt
location: variable tastiera of type Scanner
3 errors


il mio script si chiama Nuovo.java

15 Risposte

  • Re: Javac non funziona correttamente

    supremo ha scritto:


    Nuovo.java:2: error: class PrimoProgramma is public, should be declared in a file named PrimoProgramma.java
    public class PrimoProgramma {
    ^
    La classe PrimoProgramma è public e in tal caso la regola è che se c'è un tipo public (uno solo al massimo) nel sorgente, allora il file DEVE chiamarsi tassativamente esattamente come la classe (estensione a parte), quindi PrimoProgramma.java ..... non Nuovo.java o altro.

    supremo ha scritto:


    Nuovo.java:11: error: cannot find symbol
    n1 = tastiera.nextInt;
    ^
    symbol: variable nextInt
    location: variable tastiera of type Scanner
    Nuovo.java:12: error: cannot find symbol
    n2 = tastiera.nextInt;
    ^
    symbol: variable nextInt
    location: variable tastiera of type Scanner
    3 errors
    nextInt è un metodo, ci vogliono le ()
  • Re: Javac non funziona correttamente

    Grazie mille, ha funzionato ma non mostra niente e mi genera il file .class, come dovrei continuare?
  • Re: Javac non funziona correttamente

    Finalmente sono riuscito a far funzionare i miei script, adesso devo decidere quale ide usare, sono un po indeciso, quale mi consiglieresti
  • Re: Javac non funziona correttamente

    supremo ha scritto:


    adesso devo decidere quale ide usare, sono un po indeciso, quale mi consiglieresti
    "nessuno" ..... almeno fino a quando avrai preso bene confidenza con i tools del JDK e con i concetti di package e classpath.
  • Re: Javac non funziona correttamente

    Scusa voglio chiederti solo un ultima cosa, come avrai visto il mio script sta nella stessa cartella del file javac, se io volessi spostare il mio script dentro una cartella, come dovrai fare a eseguirlo, ho visto che javac ha dei parametri x specificare i percorsi, ma a me non mi ha funzionato.
    nella cartella bin ho una sottocartella di nome scripts e al interno c'e una copia del mio script MioProgramma.java, quando cerco di eseguirlo mi da errore

    root@steve-HP-14-Notebook-PC:~/Scaricati/jdk1.8.0_161/bin# ./java scripts/PrimoProgramma.java
    Errore: impossibile trovare o caricare la classe principale scripts.PrimoProgramma.java
    root@steve-HP-14-Notebook-PC:~/Scaricati/jdk1.8.0_161/bin# ./java /scripts/PrimoProgramma.java
    Errore: impossibile trovare o caricare la classe principale .scripts.PrimoProgramma.java
    root@steve-HP-14-Notebook-PC:~/Scaricati/jdk1.8.0_161/bin# ./java -sourcepath <scripts/PrimoProgramma.java>
    bash: errore di sintassi vicino al token non atteso "newline"
    root@steve-HP-14-Notebook-PC:~/Scaricati/jdk1.8.0_161/bin#
  • Re: Javac non funziona correttamente

    supremo ha scritto:


    Finalmente sono riuscito a far funzionare i miei script, adesso devo decidere quale ide usare, sono un po indeciso, quale mi consiglieresti
    Visto che vuoi sviluppare anche per Android:

    IntelliJ Idea Comunity Edition

    Sono lo stesso IDE.

    @andbin: secondo me e' meglio fare il contrario: ALMENO l'IDE gli fornisce le segnalazioni di errore!
    E visto che continua ancora a ragionare in termini di SCRIPT, (sta' cercando di eseguire il sorgente!!!) un IDE lo dovrebbe aiutare a ricordarsi che i sorgebti Java

    SI DEVONO PRIMA COMPILARE

    e poi eseguire, con il corrispondente problema di come configurare il classpath!!!

    Sempre se usa un IDE decente
    Incrociamo le dita di mani e piedi
  • Re: Javac non funziona correttamente

    Java e un po complicato, ci sono file di diversi entensioni tipo il jar, jsp, class e java,, insoma al momento ne ho capiti solo gli ultimi due ma so che in futuro avro a che fare anche con altro, qualcuno sa dirmi che differenza fa, il jsp ho capito che serve solo per le pagine web ma non mi e chiaro bene il jar, l'ho vsito in telefoni di vecchia generazione ma ancora so che si viene usato.

    in quanto al classpath non so bene cosa sia al momento, purtroppo i miei sorgenti java devono stare nella stessa cartella del javac, visto che non so come impostarlo nella variabile d'ambiente, vorrei creare una sottocartella , ma non so quale comando applicare, ho cercato su google, come eseguire un sorgente java allocato in una cartella ma la maggior parte fa solo esempi di come eseguirlo nella stessa cartella.

    ho visto che facendo javac- help c'e un istruzione a riguardo
    javac -sourcepath <cartella/file.java>
    ma con me non funziona
  • Re: Javac non funziona correttamente

    Supremo, scusami tanto, è da qualche giorno che ti seguo cercando di aiutarti e quindi mi permetto di farti notare che sbagli completamente il modo di affrontare i problemi.
    Java e un po complicato, ci sono file di diversi entensioni tipo il jar, jsp, class e java,, insoma al momento ne ho capiti solo gli ultimi due ma so che in futuro avro a che fare anche con altro, qualcuno sa dirmi che differenza fa
    Qualsiasi ambiente/linguaggio ha diversi file, anche nel linguaggio C ci sono i .c, i .h i .obj o .o, ma basta prendersi un buon testo e avere la pazienza di leggere.
    Java e un po complicato, ci sono file di diversi entensioni tipo il jar, jsp, class e java,, insoma al momento ne ho capiti solo gli ultimi due ma so che in futuro avro a che fare anche con altro, qualcuno sa dirmi che differenza fa
    Ma quanto ti costa fare una ricerca con google? Ho provato "jar" e mi è comparso wikipedia che spiega la cosa in due parole.
    in quanto al classpath non so bene cosa sia al momento, purtroppo i miei sorgenti java devono stare nella stessa cartella del javac, visto che non so come impostarlo nella variabile d'ambiente, vorrei creare una sottocartella , ma non so quale comando applicare, ho cercato su google, come eseguire un sorgente java allocato in una cartella ma la maggior parte fa solo esempi di come eseguirlo nella stessa cartella.
    Cerca di risolvere un problema alla volta: non riesci a lanciare javac da un percorso diverso da bin/? Migliorabile ti ha spiegato in altro thread come fare; non sai come settare .bashrc? Cerca come fare! Impara ad entrare fino in fondo alle questioni: alle volte per risolvere un problema si devono per forza impilare diversi sottoproblemi ma poi risolvendoli ad uno ad uno se ne viene fuori.
    ho visto che facendo javac- help c'e un istruzione a riguardo
    javac -sourcepath <cartella/file.java>
    ma con me non funziona
    E quindi? Come puoi essere aiutato, non spieghi l'errore che ti viene restituito!
  • Re: Javac non funziona correttamente

    Nella cartella bin ho una sottocartella di nome scripts, in questa cartella ho il mio sorgente PrimoProgramma.java, se lo compilo con javac non mi fa problemi, mi genera il file PrimoProgramma.class, ma se cerco di eseguirlo con il java mi da il seguente errore
    root@steve-HP-14-Notebook-PC:~/Scaricati/jdk1.8.0_161/bin# ./java scripts/PrimoProgramma
    Errore: impossibile trovare o caricare la classe principale scripts.PrimoProgramma

    Ma se lo faccio dalla cartella bin, non ci sono problemi, mi fa compilare ed eseguire il class, quindi ,perche fa cosi?
  • Re: Javac non funziona correttamente

    Poi vorrei sapere come lo trasformo in un exe
  • Re: Javac non funziona correttamente

    supremo ha scritto:


    Java e un po complicato, ci sono file di diversi entensioni tipo il jar, jsp, class e java,, insoma al momento ne ho capiti solo gli ultimi due ma so che in futuro avro a che fare anche con altro, qualcuno sa dirmi che differenza fa, il jsp ho capito che serve solo per le pagine web ma non mi e chiaro bene il jar, l'ho vsito in telefoni di vecchia generazione ma ancora so che si viene usato.

    in quanto al classpath non so bene cosa sia al momento, purtroppo i miei sorgenti java devono stare nella stessa cartella del javac, visto che non so come impostarlo nella variabile d'ambiente, vorrei creare una sottocartella , ma non so quale comando applicare, ho cercato su google, come eseguire un sorgente java allocato in una cartella ma la maggior parte fa solo esempi di come eseguirlo nella stessa cartella.

    ho visto che facendo javac- help c'e un istruzione a riguardo
    javac -sourcepath <cartella/file.java>
    ma con me non funziona
    Non e' complicato:

    .java: sorgente java
    .class: compilato java
    .jar: e' uno zip di .class. Andrebbe bene anche .zip, ma per comodita' si usa jar (Java ARchive)

    .jsp: sorgente Java Server Page (convertito in automatico prima in .java e poi in .class) Ma per usarlo ti serve un Serlet Engine (Tomcat, Jetty, JBoss, ...). E' la versione Java delle pagine ASP (Active Server Page), PHP, ecc. Per applicazioni Web.
    .war: e' uno zip che contiene un intero sito web (HTML, +CSS+Javascript+immagini+.jar+.jsp+un sacco di altra roba)

    Per ora fermati a .java e .class. EVENTUALMENTE .jar (che puoi creare come .zip e poi rinominarlo)
  • Re: Javac non funziona correttamente

    Scusa se mi intrometto, (sono un principiante in Java),
    Se tu vai su " http://www.hoeplieditore.it/8302-" o su " http://www.claudiodesio.com/java9.htm" e scarichi il file pdf "java9-Appendici.pdf" troverai tutte
    le spiegazioni per una corretta istallazione di Java su qualsiasi piattaforma e in più puoi scaricare gratuitamente un ide per Java per principianti semplicissimo e validissimo usabile intuitivamente senza bisogno di studiare il funzionamento, si chiama " EJE". Certo se sei già ad uno stato avanzato allora punta su ide più blasonati
    Saluti marco.
  • Re: Javac non funziona correttamente

    Grazie per la dritta Marco, ma in realtà nel pdf non c'è spiegato come installare il jdk in Linux (il problema di supremo); ad ogni modo come installare il jdk su Linux è stato spiegato in apposito thread ma evidentemente tali istruzioni erano troppo complicate per il nostro amico supremo.
    senza bisogno di studiare il funzionamento
    Gravissimo errore, secondo me: se non si conosce la differenza fra un file .java e un file .class (evidentemente il livello di supremo) è meglio prendersi un buon libro e studiare!
  • Re: Javac non funziona correttamente

    Buona sera. Scusa candaluar non mi sono espresso bene con la frase "senza bisogno di studiare il funzionamento", io intendevo rivolgermi alla semplicità del' IDE da me consigliato " EJE" che come dice l'autore più che un IDE è un editor di testo che facilita la scrittura di programmi Java da principianti. In conclusione intendevo dire che per usare IDE tipo Netbeans o Eclipse ( abbastanza complessi ) per uno che è già impegnato ad imparare il linguaggio Java possa essere una ulteriore spreco di energie impiegabili appunto ad imparare il funzionamento di Java.
    Saluri. marco
Devi accedere o registrarti per scrivere nel forum
15 risposte