Ich bin neu in Java und ich habe im Internet nach Lösungen gesucht, aber keine scheint zu funktionieren. Bitte hilf mir.Import benutzerdefinierte Java-Klasse
Ich habe zwei Dateien. Eine davon ist die Java-Datei, die die Hauptfunktion enthält. Darin:
...
VaporVisitor visitor = new VaporVisitor();
...
Mit diesem Befehl mag ich VaporVisitor
, um ein neues Objekt zu schaffen, die eine Klasse in einer separaten Datei VaporVisitor.java
genannt wird. Java erkennt jedoch nicht, was VaporVisitor ist, vermutlich weil es nicht bekannt ist VaporVisitor.java
existiert (es ist im selben Verzeichnis). Ich habe versucht, sie Teil des gleichen Pakets zu machen, in verschiedenen Paketen und zu importieren ... und alle sind fehlgeschlagen. Kann mir jemand eine Anleitung geben?
Danke!
EDIT: Hier ist genau das, was ich tue, und die Fehlermeldung, die ich bekomme: Also habe ich 3 Dateien. V2VM (mit meiner Hauptfunktion), VaporVisitor und eine mitgelieferte JAR-Datei mit mehreren benutzerdefinierten Klassen. Die JAR-Datei gibt mir keine Probleme; es versucht, Java zu bekommen, um VaporVisitor zu erkennen.
Also in V2VM (die Hauptfunktion), habe ich versucht zu setzen: import V2VM.java;
die nicht funktioniert hat. Ich habe versucht, V2VM in einen Unterordner namens VV, fügte package vv;
zu VaporVisitor und legte V2VM.java import vv.*
, aber das hat auch nicht funktioniert.
Für die Erstellung, habe ich versucht, javac -classpath [the jar file].jar V2VM.java
Die Fehler es gibt mir:
V2VM.java:15: cannot find symbol
symbol : class VaporVisitor
location: class V2VM
VaporVisitor visitor = new VaporVisitor();
^
V2VM.java:15: cannot find symbol
symbol : class VaporVisitor
location: class V2VM
VaporVisitor visitor = new VaporVisitor();
^
Als ich javacc
betreibe ich bin im selben Verzeichnis wie V2VM, wo auch die beiden anderen Dateien befinden . Ich habe versucht, V2VM und VaporVisitor in das gleiche Paket zu packen, aber das hat auch nicht funktioniert. So sind sie nicht Teil eines Pakets jetzt ...
EDIT 2: SOURCE CODE OF VaporVisitor und V2VM
V2VM.java:
package vv; //whether I put this or not, it doesn't work
//this stuff was provided, and is related to importing contents of the jar file; don't think this is the problem
import cs132.util.ProblemException;
import cs132.vapor.parser.VaporParser;
import cs132.vapor.ast.VaporProgram;
import cs132.vapor.ast.VBuiltIn.Op;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.PrintStream;
import vv.VaporVisitor; //whether I put this or not, it doesn't work
public class V2VM{
public static void main(String [] args){
VaporProgram vp = parseVapor(System.in, System.err);
VaporVisitor visitor = new VaporVisitor();
for(int i=0; i<vp.functions.length; i++){
for(int j=0; j<vp.functions[i].body.length; j++){
vp.functions[i].body[j].accept(parameter, visitor);
}
}
}
public static VaporProgram parseVapor(InputStream in, PrintStream err){
...
}
Für VaporVisitor.java:
package vv;
public class VaporVisitor extends VInstr.VisitorPR<Parameter_Type, Return_Type, RuntimeException>{
....
}
Alle 3 Dateien befinden sich im selben Verzeichnis vv
Wie kompilieren Sie? (Eine IDE würde das normalerweise zum Beispiel für Sie aussortieren.) –
Wie kompilieren Sie diese Klassen. Zeigen Sie uns die Verzeichnisse, in denen die Dateien abgelegt sind, das Verzeichnis, in dem Sie sich befinden, und den Befehl zum Kompilieren der Dateien. Fügen Sie die genaue Fehlermeldung ein, die Sie haben. Sagen Sie uns, in welchem Paket die Klassen sind. –
Ich benutze das Terminal und laufe 'javac'. Es wäre großartig, wenn ich verstehen könnte, was ich tun sollte, anstatt mich auf die IDE zu verlassen, wenn möglich. – pauliwago