web-dev-qa-db-ja.com

コマンドラインからパッケージ内でJavaを実行

以前に投稿した質問を読みました。あいまいなものもありますが、私の問題を解決できるものはありません。

私には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を指定しても機能しませんでした。

27
user2756339

次のように実行します。

Java One.Test

...しかしrootディレクトリ(basic)から、notOneディレクトリから。常に完全修飾クラス名を指定します。

ああ、そしてJavaのパッケージ名は小文字でなければならないので、oneone.innerではなく、OneOne.Innerにする必要があります。ほとんど全員が従うもの。

44
Jon Skeet

ディレクトリが次の場合:

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
13
MattC

これは、Javaファイルでpackageを宣言している場合、Java =コンパイラは、システム内に同じフォルダアーキテクチャを持っていると考えています。あなたの場合JavaコンパイラはOneをパッケージとして探してからtest.class。を探します。クラスファイルは、それが探しているパスを見ることができます。以下の画像を見てください(私は私の場合はHello and Testerを使用しています)

.class

画像でわかるように、パスはHello/Tester(私の場合の例)なので、アーキテクチャはHello-> Testerのようにする必要があります。

また、同じアーキテクチャを使用しておらず、コンパイル中に同じアーキテクチャを作成する場合は、javacpコマンドを使用します。

2
Simmant

cmdから実行する場合は、パッケージを使用してクラスを作成するときに、パッケージの同じ名前のディレクトリを作成し、その中に.classを配置する必要があります。たとえば、「one」という名前のクラスを作成して、名前packのパッケージ内のこのクラス、これらのコマンドを実行する必要があります

1 javac one.Java
コンパイル後にpackという名前のディレクトリを作成した後、このコマンドを実行します
2 Java pack.one
注意:
これはすべて現在の作業ディレクトリで実行する必要があり、名前「one」はファイル名とメインクラス名としてここで選択しました。最初のコマンドで使用される最初の名前はファイル名で、メインクラス名

1
javageek

Haralan Dobrevコードの次の行は、問題を解決します。

Java -cp ../ one.Test
0
Ziaullah