Я новичок в Java, и я просмотрел веб-страницы для решений, но ни один из них не работает. Пожалуйста, помогите мне.
У меня есть два файла. Одним из них является файл java, который содержит основную функцию. В нем:
...
VaporVisitor visitor = new VaporVisitor();
...
С помощью этой команды я хочу создать новый объект VaporVisitor
, который является классом в отдельном файле с именем VaporVisitor.java
. Однако Java не распознает, что такое VaporVisitor, по-видимому, потому что он не знает, что VaporVisitor.java
существует (он в том же каталоге). Я попытался сделать их частью одного и того же пакета, в разных пакетах и импортировать... и все они потерпели неудачу. Может ли кто-нибудь дать мне какое-либо руководство?
Спасибо!
EDIT: Вот что я делаю, и сообщение об ошибке, которое я получаю: Итак, у меня есть 3 файла. V2VM (с моей основной функцией), VaporVisitor и предоставленный файл jar, который имеет несколько пользовательских классов. Файл jar не дает мне никаких проблем; он пытается получить Java для распознавания VaporVisitor.
Итак, в V2VM (основная функция) я попытался вставить: import V2VM.java;
, который не работал. Я попытался поставить V2VM в подпапку под названием vv, добавил package vv;
в VaporVisitor и поместил V2VM.java import vv.*
, но это тоже не сработало.
Для компиляции я попробовал javac -classpath [the jar file].jar V2VM.java
Ошибки, которые он мне дает:
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();
^
Когда я запускаю javacc
, я попал в тот же каталог, что и V2VM, где также находятся два других файла. Я попытался поставить V2VM и VaporVisitor в один и тот же пакет, но это тоже не сработало. Поэтому они не являются частью какого-либо пакета сейчас...
ИЗМЕНИТЬ 2: ИСТОЧНИК КОДА VaporVisitor и 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){
...
}
Для VaporVisitor.java:
package vv;
public class VaporVisitor extends VInstr.VisitorPR<Parameter_Type, Return_Type, RuntimeException>{
....
}
Все 3 файла находятся в одном каталоге vv