-
Ho provato modificando il manifest in questo modo:
Codice:
Manifest-Version: 1.0
Created-By: 1.6.0_18 (Sun Microsystems Inc.)
Main-Class: class_main
Ho ricreato il file jar, ed eseguendo il comando java -jar app.jar mi ritorna sempre lo stesso errore
-
class-main.java definisce una classe che sta in un package? posta il codice di quella classe
-
class_main non e il file java, ma il file class, cmq non definisce nessuna classe che sta in un pacchetto
-
In java le classi pubbliche risiedono in un file con lo stesso nome della classe, quindi ne deduco che class_main non sia stata dichiarata public, questo non la rende accessibile all'esterno ma visibile solo all'interno dello stesso package (anche se non è dichiarato c'è sempre un package)
-
Veramente io la classe lo dichiarata in questo modo:
Codice:
class class_main()
{
public static void main(String[] args)
{
......
}
}
Io sapevo che: se davanti al prefisso class non era definito nulla, di default, quella classe veniva definita come public, non e cosi? o non era quello che tu intendevi?
-
se non la dichiari public non è pubblica, è solamente accessibile all'interno dello stesso package (e ovviamente il runtime di java sta all'esterno)
-
Scusa, ma non riesco, mi da lo stesso errore scrivendo il comando: java -jar app.jar
Sto creando il file jar utilizzando un programma in java contenente una semplice interfaccia grafica ( creata solamente per provare se funziona il file jar ) il file si chiama Pilota.java e contiene solamente questo codice scritto per provare la procedura:
Codice:
import java.io.*;
import javax.swing.*;
public class Pilota extends JFrame
{
public static void main (String[] args)
{
JFrame finestra = new JFrame();
finestra.setVisible(true);
}
}
No so, sbaglio io qualcosa? dovrei anche indicare all'interno del manifest che la classe estende la classe JFrame?
-
La classe Pilota la devi dichiarare public, così:
Codice:
import java.io.*;
import javax.swing.*;
public class Pilota extends JFrame
{
public static void main (String[] args)
{
JFrame finestra = new JFrame();
finestra.setVisible(true);
}
}
-
Già fatto, come vedi sopra il messaggio, lo editato perché per sbaglio ho preso un'altro codice, ma mi da lo stesso errore
-
adesso ci dici per bene due cose:
cosa contiene questa volta il manifest?
qual'è l'errore riscontrato? ne abbiam visti cosi tanti che ho perso il filo :mrgreen:
-
Allora, ho creato in java un file Pilota.java, contenente questo codice
Codice:
import java.io.*;
import javax.swing.*;
public class Pilota extends JFrame
{
public static void main (String[] args)
{
JFrame finestra = new JFrame();
finestra.setVisible(true);
}
}
nel momento della sua esecuzione l'interprete java mi ha creato il suo file Pilota.class, Dopo aver fatto il file MANIFEST.mf, contenente queste righe:
Codice:
Manifest-Version: 1.0
Created-By: 1.6.0_18 (Sun Microsystems Inc.)
Main-Class: Pilota
Modificato rispetto al precedente ( visto che nella Main-Class avevo mezzo il percorso completo )
Apro la console e setto la variabile path scrivendo questa riga di comando: set path=C:\Programmi\Java\jdk1.6.0_13\bin, Dopo di che eseguo questo comando per creare il file jar: jar cfm app.jar MANIFEST.mf Pilota.class.
Il file jar me lo crea, il problema e che: sia se faccio doppio click sul file e sia se lo eseguo da terminare non me lo esegue, per eseguirlo da terminare utilizzo questo comando: java -jar app.jar e mi ristetuisce questo messaggio:
Codice:
Failed to load Main-Class manifest attribute from app.jar
-
a me funziona, potresti avere dei problemi di classpath
prova ad eseguire l'applicazione cosi
java -cp . -jar app.jar
imposta il classpath sulla directory corrente e lo obbliga a cercarsi le classi in quel punto
-
Il comando mi restituisce questo errore:
Codice:
Unrecognized option: -cp.
Could not create the Java virtual machine.
Rimane il fatto che: aggiungendo manualmente il Main-Class, nel manifest, all'interno del file jar, il file mi si esegue correttamente, quindi avrò sbagliato proprio nella creazione del file jar?
-
Io eseguito gli stessi comandi da te indicati nel post precedente e sono riuscito ad eseguire il programma correttamente.
Comunque tra -cp e il punto c'è uno spazio che hai dimenticato
-
Non so perché non mi funziona, mi dice che non può caricare l'attributo Main-Class, cmq se a te funziona, ringrazio tutti per l'auto e vedrò in seguito di risolvere il problema.