从终端类NotFoundException手动编译Java
我正在编写一个非常简单的学校作业,在其中一个任务中,我必须将变量从终端传递给as varargs。我试图定义完整的类路径,但它一直抛出相同的异常 我有一个文件结构,其中要运行的文件位于src/opgave1/Letters.java中从终端类NotFoundException手动编译Java,java,Java,我正在编写一个非常简单的学校作业,在其中一个任务中,我必须将变量从终端传递给as varargs。我试图定义完整的类路径,但它一直抛出相同的异常 我有一个文件结构,其中要运行的文件位于src/opgave1/Letters.java中 package opgave1; public class Letters { public static void main(String[] args) { voidLetter(args); }
package opgave1;
public class Letters {
public static void main(String[] args) {
voidLetter(args);
}
public static void voidLetter(String ... var) {
System.out.println(var.length);
}
}
从项目src文件夹中运行测试:
$>javac opgave1/Letters.java
$>java opgave1.Letters arg1 arg2 arg3
$ Error: Could not find or load main class opgave1.Letters
$ Caused by: java.lang.ClassNotFoundException: opgave1.Letters
我在stackoverflow上看到了类似的问题,但没有一个解决方案适合我。编译如下:
javac -d . Letters.java
java opgave1.Letters arg1 arg2 arg3
并按如下方式运行:
javac -d . Letters.java
java opgave1.Letters arg1 arg2 arg3
输入以下命令以了解有关javac
的更多信息:
javac
请注意,命令中的
表示当前目录
演示:
[~]: cd /Users/arvind.avinash/Documents/workspace-spring-tool-suite-4-4.4.0.RELEASE/AdHoc/src
[~/Documents/workspace-spring-tool-suite-4-4.4.0.RELEASE/AdHoc/src]: vi Letters.java
[~/Documents/workspace-spring-tool-suite-4-4.4.0.RELEASE/AdHoc/src]: javac -d . Letters.java
[~/Documents/workspace-spring-tool-suite-4-4.4.0.RELEASE/AdHoc/src]: java opgave1.Letters arg1 arg2 arg3
3
你是如何编译代码的?你需要先用
javac
编译代码,然后通过java
执行编译后的代码(一个.class
文件)和参数。您通常会有一个IDE,它可以在background@rouge严格来说不是这样-谢谢您的演练。当我从程序包dir“opgave1”运行javac命令时,它会创建一个名为opgave1的新文件夹,并在该文件夹中创建Letters.class。因此,现在应该对其进行编译。当我从src/opgave1路径运行java opgave1.Letters arg1 arg2 arg3时,仍然会得到ClassNotFoundException。我还试图在没有任何运气的情况下定义类路径。有什么想法吗?@LukasMittunAlexanderGuldstv-当我从程序包dir“opgave1”
运行javac命令时,这就是问题的根本原因。如果你仔细检查我的答案,你会发现我已经从src
文件夹运行了javac
命令。如果有任何疑问/问题,请随时发表评论。如果我运行`javac-d。Letters.java`from./src它抛出错误:`file not found:Letters.java。该文件在./src/opgave1/Letters.java中-如果我运行
javac-d。来自src的opgave1/Letters.java`it works。但是java opgave1.Letters a b c
仍然返回该错误,它仍然无法解决该错误。我已经把任务交给了我小组里的另一个人,我正在和他一起做作业。Thanks@LukasMittunAlexanderGuldstv-因为您已经声明了包opgave1
在Letters.java
中,您不必将Letters.java
放入/src/opgave1
中。程序包,opgave1
将由javac
命令自动创建。将Letters.java
放入/src
中,并使用答案中所示的命令。