ho un piccolo grande problema con i package di java; sto creando un parser per un pseudo linguaggio matematico;momentaneamente ho una classe enum Simboli che contiene tutti i simboli che possono essere utilizzati per il linguaggio matematico vi mostro la classe:
- Codice: Seleziona tutto
package Laboratorio4;
import java.lang.*;
enum Simboli {
FALSE("false"), TRUE("true"), NOT("!"), AND("&&"), OR("||"), XOR("^"), EQ("=="), LT("<"), GT(">"), LEQ("<="), GEQ(">="), OPEN_PAR("("), CLOSED_PAR(")"),
NUM {
@Override
public String toString() {return "is a number";}
},
EOF {
@Override
public String toString() {return "end of line";}
},
UNKNOWN {
@Override
public String toString() {return "unknown token";}
},
;
private String prova;
Simboli() {this(null);}
Simboli(String p) {this.prova=p;}
@Override
public String toString() {return this.prova;}
public static void main(String[] args)
{
for(Simboli tmp: values())
{
System.out.println("Token Type: " +tmp.name()+" Concrete representatio: "+tmp);
}
}
};
ho inserito un piccolo main giusto per verificare se la classe era corretta!
ora se compilo con il package Laboratorio4 (che è il nome della cartella dove risiede il sorgente) la compilazione fa a buon fine ma al momento dell'esecuzione il compilatore mi restituisce:
- Codice: Seleziona tutto
[inze@archbang Laboratorio4]$ java Simboli
Exception in thread "main" java.lang.NoClassDefFoundError: Simboli (wrong name: Laboratorio4/Simboli)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: Simboli. Program will exit.
se invece compilo così:
- Codice: Seleziona tutto
[inze@archbang Laboratorio4]$ java Laboratorio4.Simboli
Exception in thread "main" java.lang.NoClassDefFoundError: Laboratorio4/Simboli
Caused by: java.lang.ClassNotFoundException: Laboratorio4.Simboli
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: Laboratorio4.Simboli. Program will exit.
la cosa buffa che se compilo ed eseguo commentando la prima riga(quella del package) il codice funziona :/
se per caso qualcuno riesci ad aiutarmi li saro grato a vita