我是Java的新手,但我一直在网上寻找解决方案,但似乎都没有用。请帮我。
我有两个文件。其中之一是包含主要功能的java文件。在里面:
...
VaporVisitor visitor = new VaporVisitor();
...
使用该命令,我想创建一个新对象VaporVisitor,该对象是一个名为的单独文件中的类VaporVisitor.java。但是Java无法识别VaporVisitor是什么,大概是因为它不知道VaporVisitor.java存在(它在同一目录中)。我试图使它们成为同一程序包的一部分,放入不同的程序包中并导入…,但所有这些都失败了。谁能给我任何指导?
谢谢!
编辑:这正是我在做什么,并且我得到的错误消息:所以我有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
for(int j=0; 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{
....
}
所有3个文件都在同一目录中 vv