我正在尝试实施以下内容:
public class Main {
public static void main(String[] args) {
//READ FILE IN
String filename = args[0];
System.out.println(filename);
}}
这个编译很好,但是当我尝试运行java br/com/seimos/minijava/Main.java < a
或java br/com/seimos/minijava/Main.java a
时,我收到错误。为什么?? (顺便说一句,我需要得到它以便我可以java br/xx/xx.../xx
。
谢谢!
编辑:抱歉,我最初打错了。我执行java
而不是javac
。
我得到的错误是:
Exception in thread "main" java.lang.NoClassDefFoundError: br/com/seimos/minijava/Main/java
Caused by: java.lang.ClassNotFoundException: br.com.seimos.minijava.Main.java
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)
答案 0 :(得分:0)
运行Java程序分为两步。首先,.java
文件被编译为.class
个文件。然后使用java
命令执行类文件。显然,当您调用java
时,运行时参数必须在运行时传递。
答案 1 :(得分:0)
您不会在编译时传递参数,而是在运行时传递参数。
javac --> compiles your Java program
java --> runs the generated bytecode
java br/com/seimos/minijava/Main.java -args
^ remove (.java)
Java运行时运行生成的 .class 字节码,它是提供的名称,而不是未编译的.java
源
答案 2 :(得分:0)
对于编译,如果java文件包含某个包,则需要应用br.com.xxx.main.java。如果那只是java文件的路径就可以了。你可以发布错误吗?