2017-03-21 10 views
0

は、ここに私の状況です: 私はフォルダ構造を持っている:Javaのパッケージ実行

C:\Users\user\Desktop\JavaTraining\Chapter3\examples. 

例もフォルダです。今、私はpackageステートメントpackage Chapter3;と第3章フォルダ内のファイル名Calculator.Javaを持っています。 javac Chapter3\Calculator.javaとしてJavaTrainingディレクトリからファイルをコンパイルしたので、コマンドラインIから、​​それはコンパイルされ、私は、ファイル生成Calculator.classを参照してください。しかし、JavaTrainingディレクトリからコマンドjava Chapter3.Calculatorを実行すると、それは私にerror: Could not find file or load main class Chapter3.Calculatorを投げた。

はその後、私はexamplesという名前Chapter3にサブフォルダを作成し、例フォルダにCalculator.javaをコピーして、ルートフォルダ(第3章ディレクトリからコマンドを実行する)として、第3章を考えてファイルをコンパイルして実行してみました。エラーなし、ファイルは実行されました。

は誰もこれが起こったか、何その背後にある理由である、私は怒っつもりです、私を説明することができますしてください...

Calculator.javaはのprintsum機能からの和を見つけようと主な機能を持つだけでクラス電卓です2つの変数。

Iは、上記によるとhttp://stackoverflow.com/questions/18093928/what-does-could-not-find-or-load-main-class-mean で提供の提案を経て、それは文法の間違いやPATH and CLASSPATH環境変数を設定する(ファイルを実行しようとする方法)のいずれかでした。

私はCLASSPATH変数が現在のディレクトリに設定されているかどうかを確認するためにecho %CLASSPATH%を試しました。 JavaTrainingディレクトリからechoコマンドを実行すると、.が表示されました。 Chapter3フォルダをルートディレクトリとして試したときにファイルが実行されませんでしたが、第3章でサブフォルダを作成して第3章をルートディレクトリとして作成した場合、何が原因か何が問題なのでしょうか?

ここで、出力とコマンドラインは次のとおりです。

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(); 
    } 
} 
+0

パッケージに電卓ですか? – matt

+0

クラスパスはパッケージ階層の最上位に設定する必要があります。 '.'に設定されている場合は、そこからjavaを呼び出すか、クラスパスに' cp'の – pvg

+0

をJavaTrainingパッケージから設定する必要があります。 javac第3章\ Calculator.javaと java第3章\電卓 – LeTex

答えて

1

ファイルをビルドするとき、ビルドディレクトリを持っている良いですが、その後、Javaのクラスを配置します正しいパッケージレイアウトで

mkdir build 
javac -d build path/to/source/Files.java 
java -cp build package.name.Files 
関連する問題