以前に投稿した質問を読みました。あいまいなものもありますが、私の問題を解決できるものはありません。
私には2つの簡単なクラスがあります。
package One;
import One.Inner.MyFrame;
public class test
{
public static void main(String args[])
{
MyFrame f= new MyFrame();
}
}
他のクラスは
package One.Inner;
import Java.awt.*;
import javax.swing.*;
public class MyFrame extends JFrame
{
public MyFrame()
{
setPreferredSize(new Dimension(400,560));
setVisible(true);
}
}
私はWindows cmdの「基本」ベースフォルダにいます。を使用してコンパイルします
basic> javac *.Java -d .
フォルダーとサブフォルダーが作成されます。
cd One
basic\One> Java test
これにより、大量のエラーが生成されます。多くの答えは、機能しなかったフルパスを指定するように指示しました。私のクラスはOneであるため、-cpを使用してOneを指定しても機能しませんでした。
次のように実行します。
Java One.Test
...しかしrootディレクトリ(basic
)から、notOne
ディレクトリから。常に完全修飾クラス名を指定します。
ああ、そしてJavaのパッケージ名は小文字でなければならないので、one
とone.inner
ではなく、One
とOne.Inner
にする必要があります。ほとんど全員が従うもの。
ディレクトリが次の場合:
basic\One
パッケージのベースディレクトリからJavaを実行します。
basic>Java One.test or basic>One.test <optional arguments>
(理想的には、パッケージは小文字で、クラスは大文字です):
basic>Java one.Test
「存在しない」というメッセージが表示された場合、Javaコマンドは、クラスで参照したクラスを見つけることができません。-cpオプションでそれらを指定できます( '。'は 'here'を意味します、好きなだけ場所を追加して、Windowsでは「;」、Linuxでは「:」で区切って追加できます)。
basic>Java -cp . one.Test
or
basic>Java -cp .;..\..\someJar.jar;c:\someDirectory\classesDirectory one.Test
これは、Javaファイルでpackageを宣言している場合、Java =コンパイラは、システム内に同じフォルダアーキテクチャを持っていると考えています。あなたの場合JavaコンパイラはOneをパッケージとして探してからtest.class。を探します。クラスファイルは、それが探しているパスを見ることができます。以下の画像を見てください(私は私の場合はHello and Testerを使用しています)
画像でわかるように、パスはHello/Tester(私の場合の例)なので、アーキテクチャはHello-> Testerのようにする必要があります。
また、同じアーキテクチャを使用しておらず、コンパイル中に同じアーキテクチャを作成する場合は、javacpコマンドを使用します。
cmdから実行する場合は、パッケージを使用してクラスを作成するときに、パッケージの同じ名前のディレクトリを作成し、その中に.classを配置する必要があります。たとえば、「one」という名前のクラスを作成して、名前packのパッケージ内のこのクラス、これらのコマンドを実行する必要があります
1 javac one.Java
コンパイル後にpackという名前のディレクトリを作成した後、このコマンドを実行します
2 Java pack.one
注意:
これはすべて現在の作業ディレクトリで実行する必要があり、名前「one」はファイル名とメインクラス名としてここで選択しました。最初のコマンドで使用される最初の名前はファイル名で、メインクラス名
Haralan Dobrevコードの次の行は、問題を解決します。
Java -cp ../ one.Test