Java包执行
我的情况如下: 我有一个文件夹结构:Java包执行,java,directory,package,Java,Directory,Package,我的情况如下: 我有一个文件夹结构: C:\Users\user\Desktop\JavaTraining\Chapter3\examples. 示例也是一个文件夹。现在,我在第3章文件夹中有一个文件名Calculator.Java,其中包含package语句package Chapter3。因此,在命令行中,我将JavaTraining目录中的文件编译为javac Chapter3\Calculator.java,编译后,我看到生成了一个文件Calculator.class。但是当我从Jav
C:\Users\user\Desktop\JavaTraining\Chapter3\examples.
示例也是一个文件夹。现在,我在第3章文件夹中有一个文件名Calculator.Java
,其中包含package语句package Chapter3代码>。因此,在命令行中,我将JavaTraining
目录中的文件编译为javac Chapter3\Calculator.java
,编译后,我看到生成了一个文件Calculator.class
。但是当我从JavaTraining
目录运行命令java Chapter3.Calculator
时。它向我抛出了一个错误:找不到文件或加载主类Chapter3.Calculator
然后,我在Chapter3
中创建了一个子文件夹,名为examples
,并将Calculator.java
复制到examples文件夹中,并尝试编译和执行文件,将Chapter3作为根文件夹(从Chapter3目录执行命令)。没有错误,文件已执行
请任何人解释一下为什么会发生这种事,或者背后的原因是什么,我快疯了
Calculator.java
只是一个类计算器,其主函数试图从两个变量的printsum函数中求和
我浏览了http://stackoverflow.com/questions/18093928/what-does-could-not-find-or-load-main-class-mean
根据上面的描述,要么是语法错误(试图执行文件的方式),要么是设置了路径和CLASSPATH
环境变量
我甚至尝试了echo%CLASSPATH%
以查看我的CLASSPATH
变量是否设置为当前目录。当我从JavaTraining
目录执行echo命令时,它确实显示了
。
当我尝试将Chapter3文件夹作为根目录时,该文件没有执行,但当我在Chapter3中创建子文件夹并将Chapter3作为根目录时,它执行了,原因可能是什么,或者我做错了什么
以下是带有输出的命令行:
C:\Users\vikas\Desktop\JavaTraining>javac Chapter3\Calculator.java
C:\Users\vikas\Desktop\JavaTraining>java Chapter3.Calculator
Error: Could not find or load main class Chapter3.Calculator
C:\Users\vikas\Desktop\JavaTraining>cd Chapter3
C:\Users\vikas\Desktop\JavaTraining\Chapter3>javac examples\Calculator.java
C:\Users\vikas\Desktop\JavaTraining\Chapter3>java examples.Calculator
The sum is 30
C:\Users\vikas\Desktop\JavaTraining\Chapter3>
Calculator.java文件:
// One Package Statement
package chapter3;
// The file in Chapter 3 folder, file in example folder has
//package examples;
// One or more import statements
import java.io.*;
import java.util.*;
// Class Declaration
public class Calculator {
// State. Variables and Constants
int i=10;
long k = 20;
// Behavior, one or more methods
void printSum(){
long sum;
sum = i+ k;
System.out.println("The sum is " + (i+k));
}
public static void main (String[] args) {
Calculator c = new Calculator();
c.printSum();
}
}
当您构建一个文件时,最好有一个构建目录,然后java会将该类放入正确的包布局中
mkdir build
javac -d build path/to/source/Files.java
java -cp build package.name.Files
计算器在包中吗?类路径必须设置在包层次结构的顶部。如果设置为
,那么您应该从那里调用java,或者从package JavaTraining中设置一个带有标记cp
的类路径,应该能够同时执行这两项操作:javac Chapter3\Calculator.java和java Chapter3\Calculator@LeTex例如我想是的,但事实并非如此work@pvg:类路径设置为“”,你能详细解释一下你的意思吗