是否有其他方法可以在不注释包名称行的情况下成功运行 .java 程序?

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

我在 Netbeans 上创建了一个简单的 Java 程序,当我在 Netbeans IDE 中执行它时,它工作得很好。然而,这是我正在处理的问题:

使用命令行使用“javac”编译后运行程序时遇到此错误,特别是在 Fedora 上的 bash:

java EjerciciosClase 错误:无法找到或加载主类 EjerciciosClase 引起原因:java.lang.NoClassDefFoundError:com/estudio/ejerciciosclase/EjerciciosClase(错误名称:EjerciciosClase)

我能够通过注释包名称行来解决它:

包 com.estudio.ejerciciosclase;

我已从包装中取出该线,它似乎可以工作。

/*
 * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
 * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
 */
package com.estudio.ejerciciosclase;
import java.util.Scanner; // import the scanner class
/**
 *
 * @author jfac
 * 
 */
public class sumScanner {
    public static void main(String[] args) {
        int numA, numB, theSum;
        System.out.println("Program that reads y sums two numbers");
        
        Scanner newObj = new Scanner(System.in);
        System.out.println("Enter the first number: ");   
        numA = newObj.nextInt();
        //String numAString = Integer.toString(numA);
        
        System.out.println("Enter the second number: ");
        numB = newObj.nextInt();
        //String numBString = Integer.toString(numB);
        theSum = numA + numB;
       // String theSumString = Integer.toString(theSum);
        
        System.out.println("The sum of " + numA + " + " +  numB + " is equal to " + theSum);
    }
}

有没有其他方法可以在不删除包名称行的情况下运行该程序?我想在 netbeans IDE 和 BASH 终端上运行程序而不修改代码。

java linux bash netbeans fedora
1个回答
0
投票

@您共享的类称为“sumScanner”,而不是“EjerciciosClase”。您的类位于与包结构匹配的子目录中。如果您正在注释该包并且它有效,那么您正在执行一个名为“EjerciciosClase”的类,该类位于源目录的顶部而不是子包。要执行包中的类,您需要添加包:

java com.estudio.ejerciciosclase.sumScanner

根据 Java 命名约定,类名应以大写字母开头,但这与问题无关。您应该遵循 Java 约定,因此您应该将类重命名为类似

SumScanner
的名称,以及要匹配的文件名。

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