如何在包中运行Java类?

gezhonglunta :

我有两个如下的Java类

App1 没有包装:

class App1 {
    public static void main(String[] args) {
        System.out.println("App1 hello world...");
    }
}

App2 在包装中:

package java.java.package1;    
class App2 {
    public static void main(String[] args) {
        System.out.println("App2 hello world...");
    }
}

我可以同时编译它们:

D:\javaTest>javac App1.java

D:\javaTest>javac App2.java

但是,我只能运行第一个:

D:\javaTest>java App1
App1 hello world...

D:\javaTest>java java.java.package1.App2

Exception in thread "main" java.lang.NoClassDefFoundError: java/java/package1/App2
Caused by: java.lang.ClassNotFoundException: java.java.package1.App2
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
Could not find the main class: java.java.package1.App2.  Program will exit.

我该如何跑步App2

乔恩·斯基特(Jon Skeet):

如果将放在与包名称(D:\javaTest\java\java\package1\App1.java相匹配的适当目录层次结构中,并从层次结构的根目录)进行编译/运行,则D:\javaTest不会出现此问题:

D:\javaTest>javac java\java\package1\App1.java

D:\javaTest>java java.java.package1.App1
App2 hello world...

您还可以使用-d选项进行编译,以便将类移动到这样的目录层次结构中:

javac -d . App2.java
java java.java.package1.App2

请注意,您不应使用以开头的程序包名称java,JDK的更高版本将引发SecurityException。有关更多信息,请参见此问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Java中从主类访问src.test包,或者如何从主类运行测试类?

如何在java中从另一个包的类运行方法

如何在Eclipse Che中运行Java类

如何在jar中运行Java类的main方法?

如何在buildozer中运行dlib包?

如何在 sparklyr 包中运行 FPGrowth

如何在Java类路径内的目录中包含外部JAR并运行Java类?

如何使用Java默认包中的类?

如何访问默认包中的java类?

如何在JAVA的同一包中调用方法或访问其他类中的字段

如何在运行时将模块中的函数添加到类中,同时保留包的层次结构?

如何在Java中获取当前的类名,包括包名?

如何在oracle中的包中运行函数(C#)

如何从命令行中从具有包类的闪存驱动器中运行Java程序?

如何在OSGi中的不同包中扩展测试类

如何在类路径中使用jar运行Java类?

如何在正在运行的活动中从普通Java类中打印出某些内容?

java如何在其他包中使用类?

如何在包目录中运行单元测试

如何在闭包中访问类的变量?

如何在IntelliJ中查看类包的类型和参数?

如何在OSGi捆绑包中查找带注释的类

如何在包中访问laravel全局类

如何在运行Java中类的不同实例的线程之间同步静态变量?

如何在运行时在Java中设置多个类路径条目?

Eclipse(IDE)如何在没有公共类的情况下在Java中运行主要方法?

如何在Java executor类中停止所有可运行线程?

如何在另一个目录中编译和运行Java类?

如何在线程化Java应用程序中的运行时确定主类?