在Java中从控制台打开包中的类

问题描述 投票:0回答:4

因此,当我尝试从命令提示符打开一个不在包中的 java 类时,一切正常,但是当我尝试打开包中的类时,它会给我 NoClassDefFoundError 。 当我尝试打开类(java somepackage/someclass)时列出包时,它说它无法加载或找到主类。

有什么帮助吗?

java class console cmd package
4个回答
1
投票

我可以推断,你有两门课:

测试.java:

// no package defined here

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

因此您可以使用以下命令编译并运行它:

javac Test.java
java Test

另一堂课:

测试.java:

package test; // package defined here

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

因此做同样的事情会给你带来错误。 为此,您需要位于终端或 cmd 中“test”文件夹的父目录中并使用:

java test.Test

编译器没有问题。您可以像往常一样使用“test”文件夹中的 javac Test.java 进行编译。


0
投票

NoClassDefFoundError 意味着你的 JVM 在运行时找不到你的类。这可能是因为它不可见(设置为私有或受保护,或者只是没有访问修饰符)。

它也可能从您的构建路径中丢失


0
投票

我假设的是,例如,您正在创建一个包和其中的一个类。

包 com.vishwa.hello.commandLineArgs;

公共类 ComandLineArguments {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    for (int i = 0; i < args.length; i++) {
        System.out.println("Command line arg is "+args[i]);
    }

}

}

当我尝试在命令提示符(来自包文件夹)中编译并运行上述代码时 javac ComandLineArguments.java。 java CommandLineArguments 123 456.

您收到以下错误: 错误:无法找到或加载主类 ComandLineArguments 导致:java.lang.NoClassDefFoundError:com/vishwa/hello/commandLineArgs/ComandLineArguments(错误名称:ComandLineArguments)

有两种方法可以解决这个问题:

  1. 转到项目的根路径,然后运行。

    java com/vishwa/hello/commandLineArgs/ComandLineArguments 123 456 789.
    命令行参数是 123。 命令行参数是 456。 命令行参数是 789。

  2. 如果要从包目录运行程序,则需要指定类路径以及完整的包 参考。 java-cp /用户/16399/文档/workspace-spring-tool-suite-4-4.12.1.RELEASE/CoreJava/src/ com/vishwa/你好/commandLineArgs/ComandLineArguments 123 456 789。 命令行 arg 是 123。命令行 arg 是 456。命令行 arg 是 789。


0
投票
    package pkg1;
    public class Dataguise{
            public static void main(String [] args){
            System.out.println("My name is Maninder Singh");
            }
    }

假设这是我的代码。我的包名称是pkg1。

  1. 首先需要创建pkg1目录(如果不存在)。
  2. 运行
    javac Dataguise.java
    命令
  3. 它将生成
    Dataguise.class
    文件并将该文件移动到
    pkg1
    文件夹
  4. 现在运行
    pkg1.Dataguise
    命令 - 它会起作用。

我也遇到了同样的问题,所以分享我的经验。

© www.soinside.com 2019 - 2024. All rights reserved.