我是Java的新手,我已经浏览了网络寻找解决方案,但似乎没有任何工作。请帮帮我。导入自定义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的子文件夹中,并将其添加到VaporVisitor的package vv;,并将其放入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
+1
你是如何编译的? (例如,一个IDE通常会为你排序所有这些。) –
+2
你如何编译这些类。向我们展示放置文件的目录,您所在的目录以及用于编译文件的命令。粘贴您的确切错误消息。告诉我们这些课程在哪个包里。 –
+0
我实际上使用终端,只是运行'javac'。如果我能理解我应该做什么,而不是依赖于IDE,那将会很棒 –