如何从父目录执行Java程序

发布于 2024-10-14 00:26:54 字数 449 浏览 6 评论 0原文

我有一个像这样的目录结构:

./
 +-- myClass
 |   +-- MainClass.class
 |
 +-- dummy
     +-- DummyClass.class

MainClass 包含 public static void main(String args[]) 并导入 dummy.DummyClass。

我使用像 javac myClass/MainClass.java dummy/DummyClass.java 这样的简单命令进行编译,一切都很好。但是当我尝试使用 java myClass.MainClass 从 ./ 执行它时,我收到“找不到主类”错误。

如果我使用 -cp 选项更改类路径,则 MainClass 无法再找到 DummyClass。

有什么提示吗?

非常感谢 ;)

I have a directory structure like this:

./
 +-- myClass
 |   +-- MainClass.class
 |
 +-- dummy
     +-- DummyClass.class

MainClass contains the public static void main(String args[]) and imports dummy.DummyClass.

I compile with a simple command like javac myClass/MainClass.java dummy/DummyClass.java and all is fine. But when I try to execute it from ./ using java myClass.MainClass I get the "cannot find main class" error.

If I change the classpath with the -cp option then MainClass can't find DummyClass anymore.

Any hints?

Thank you very much ;)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

゛时过境迁 2024-10-21 00:26:54

MainClass 顶部是否有:package myClass;

这对于将类视为包 myClass 的一部分是必要的,只有这样它才能被正确地寻址为 myClass.MainClass - 目录结构必须镜像 pacakge 结构。

Does MainClass have this at the top: package myClass;?

This is necessary for the class to considered part of the package myClass and only then it can be correctly addressed as myClass.MainClass - the directory structure has to mirror the pacakge structure.

分分钟 2024-10-21 00:26:54

这应该适合你:

MainClass:

package myClass;

导入虚拟。虚拟;

公共类主类{

java
public static void main(String[] args){

    System.out.println(:"This is the main class");
    Dummy dummy = new Dummy();
    dummy.exec();
}

}

Dummy:

包 dummy;

public class Dummy{

public void exec(){

    System.out.println("This is the dummy class exec invocation");

}

}

在根文件夹中的命令行:

javac myClass/MainClass.java dummy/Dummy.java

  • 这将导致该类被编译

并且,这将执行并调用 MainClass 中的“main”:
javac myClass/MainClass.java 虚拟/Dummy.java

This should work for you:

MainClass:

package myClass;

import dummy.Dummy;

public class MainClass{

java
public static void main(String[] args){

    System.out.println(:"This is the main class");
    Dummy dummy = new Dummy();
    dummy.exec();
}

}

Dummy:

package dummy;

public class Dummy{

public void exec(){

    System.out.println("This is the dummy class exec invocation");

}

}

At the commandline in the root folder:

javac myClass/MainClass.java dummy/Dummy.java

  • This will result in the class being compiled

And, this will execute and invoke the "main" in the MainClass:
javac myClass/MainClass.java dummy/Dummy.java

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文