从命令行在包中运行java
我已经阅读了之前发布的问题。有些是模糊的,没有解决我的问题,所以我不得不再次问 我有两门简单的课从命令行在包中运行java,java,command-line,package,classpath,javac,Java,Command Line,Package,Classpath,Javac,我已经阅读了之前发布的问题。有些是模糊的,没有解决我的问题,所以我不得不再次问 我有两门简单的课 package One; import One.Inner.MyFrame; public class test { public static void main(String args[]) { MyFrame f= new MyFrame(); } } 另一类是 package One.Inner; import java.awt.*; import
package One;
import One.Inner.MyFrame;
public class test
{
public static void main(String args[])
{
MyFrame f= new MyFrame();
}
}
另一类是
package One.Inner;
import java.awt.*;
import javax.swing.*;
public class MyFrame extends JFrame
{
public MyFrame()
{
setPreferredSize(new Dimension(400,560));
setVisible(true);
}
}
我在Windows cmd的基本文件夹“basic”中。我使用
basic>javac*.java-d。
将创建一个文件夹和子文件夹
cd-One
basic\One>java测试
这会产生大量错误。许多答案都指向指定不起作用的完整路径。
我的类位于一个类中,因此使用-cp指定一个也不起作用。您可以将其作为:
java One.Test
。。。但是从根目录(basic
),而不是从One
目录。始终指定完全限定的类名
噢,Java中的包名应该是小写的,所以它应该是one
和one.inner
,而不是one
和one.inner
。这只是一个惯例,但几乎每个人都遵循它。如果目录是:
basic\One
从包的基本目录运行java:
basic>java One.test or basic>One.test <optional arguments>
如果您收到“不存在”消息,那么java命令无法找到您在类中引用的类。您可以使用-cp选项来指向它们(“.”表示“此处”,您可以在Windows上添加任意多的位置,并在Linux上添加“;”和“:”
在使用包创建类时,如果要从cmd运行该类,则必须创建一个与包同名的目录,将.class放入其中,然后可以轻松运行该类。例如,如果创建了一个名为“one”的类,并且在名为pack的包中创建了该类,则必须运行以下命令 1 javac one.java
编译后,使用名称pack创建目录,然后运行此命令
2 java pack.one
注:
所有这些都必须在当前工作目录中完成,我在这里选择“one”作为文件名和主类名
我们都知道第一个命令中使用的第一个名称是文件名,第二个名称是主类名,这是因为如果您在java文件中声明包,那么java编译器认为您的系统中有相同的文件夹体系结构。 在您的例子中,Java编译器将其作为一个包进行查找,然后测试.class.,或者更具体地说,只需查看.class文件内部,您就可以看到它所查找的路径。请看下图(我的案例我使用Hello和Tester) 正如您在图中看到的路径是Hello/Tester(我的示例),所以体系结构应该类似于Hello->Tester
如果您没有相同的体系结构,并且希望在编译时创建相同的体系结构,那么使用javacp命令 下面一行Haralan Dobrev代码解决了这个问题
java -cp ../ one.Test
必须从其中完成的目录非常重要。我早些时候弄错了。泰……注意到。我错误地认为只有Java的内置包必须是小的。有没有办法从同一个目录运行它?例如,通过命令行选项指定工作目录?我搜索了很多,每个人都说“只需向上一个方向”,但在某些情况下,这真的很烦人。哦,在这里:
java-cp../one.Test
。我确信我以前试过。是的-在Java应用程序启动器Java
的man
文件中,它声明:“默认情况下,没有选项的第一个参数是要调用的类的名称。应该使用完全限定的类名。”我认为他们应该将此更改为“必须使用完全限定的类名”!带有-cp标志的示例非常有用+1谢谢,这很有帮助。你应该使用格式来简化对答案的理解。只需添加一些关于问题的好东西:
basic>java -cp . one.Test
or
basic>java -cp .;..\..\someJar.jar;c:\someDirectory\classesDirectory one.Test
java -cp ../ one.Test