Java 命令行编程
我正在使用RHEL。我正在运行下面的程序在我的控制台中打印一行Java 命令行编程,java,linux,command-line,Java,Linux,Command Line,我正在使用RHEL。我正在运行下面的程序在我的控制台中打印一行 package test; public class test { public static void main(String a[]) { System.out.println("hi"); } } 我用 javac test.java 我试着跑 java test.test 上面说, could not load or find mai
package test;
public class test
{
public static void main(String a[])
{
System.out.println("hi");
}
}
我用
javac test.java
我试着跑
java test.test
上面说,
could not load or find main class
我在我的类文件所在的目录中
ls
在目录上显示
test.java test.class
原因可能是什么
java test
说,
java
将类名(包括包)作为参数,而不是文件名
此外,类test.test
必须存储在当前目录中的test/test.class
-而不是test.class
您应该将test.class
放在名为test
的文件夹中;转到外部文件夹(包含测试的文件夹)并运行:
下面是我为一个简单java程序所做的:
无包装xxx代码>行
确保主类的名称为Test
-首字母大写
您的.java
文件应存储在test
目录中(test/test.java
)
如果您使用的是javac test.java
,请确保在执行java test.test
之前将目录更改为父目录(cd..
),因为java将在test
目录(或包)中查找test.class
请仔细查看以了解更多详细信息
您可能希望进行通读,这将使人们更容易阅读您的代码,您也更容易阅读他人的代码。测试不应该编译失败吗?您在方法或静态
块上下文之外调用功能。2.您不需要一个公共静态voidmain(String[]args){…}
方法吗?天哪,我打错了,我改正了。对于包测试,任何其他ReasonTest.class必须位于名为test的文件夹中。。很明显!!!!!!!!java test.test表示找不到类。@GopsAB运行该命令时,您的文件夹结构是什么?当前目录是什么?我位于CDH目录中,其中存在.java和.class文件。我在同一个目录中尝试了从写入文件到运行的所有命令it@GopsAB您必须将test.java
文件存储在test
目录中。您可以更改到test
目录,并使用javac test.java
编译test.java
,但必须更改到父目录(在test
目录上方)为了运行它。不建议将类存储在默认包中,因为这样会使其无法评估。@MadProgrammer不建议将其仅用于复杂到可以拆分为多个包的程序。@immibis,如果您不希望任何东西加载这些类;)@MadProgrammer您可以通过反射或字节码操作从默认包加载类。@immibis Oh flippen joy,因此我们没有做正确的事情,而是对其进行了破解…什么部分?您是否将.java
放在正确的目录中?您是否从顶级包的父目录执行类文件?我本以为解释答案细节的要求会有所帮助……3分钟后我会接受的。请让我知道投反对票的原因。我会在报告中更正它future@GopsAB我不确定答案是否会被否决,有些人对“简单”的错误非常挑剔,特别是当这些错误可以通过使用适当的教程来解决,或者如果这个问题经常被问到(是的,这个问题一个月只问几次),如果我有org.myorg作为我的软件包,然后test.java应该位于org/myorg/test.java中,test.class也必须位于同一目录中。然后我应该从org的父目录运行它。我明白了吗,伙计?@GopsAB是的,这是最基本的。包
表示类文件应位于的预期目录
Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: test/test)
java test.test