*

[java, NETBEANS]出来上がったclassファイルをコマンドラインで実行する。

公開日: : 最終更新日:2015/02/13 java

コマンドラインから実行

以前作成したJavaのHelloWorldをコマンドラインから実行してみます。

ソース

package helloworld;

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!!1!1");
    }
}

何の変哲もないHelloWorld。
NETBEANSでHelloWorldというプロジェクトを作成して、標準出力を入れただけです。
F11でビルドしておきましょう。
F6で実行して、起動できることを確認してもいいかもしれません。

プログラム本体はいずこ

Javaのclassファイルはデフォルトは以下に存在します(Windows)。
C:\Users\[User名]\Documents\NetBeansProjects\HelloWorld\build\classes\helloworld

コマンドラインから実行してみましょう

cd C:\Users\[User名]\Documents\NetBeansProjects\HelloWorld\build\classes
java -cp . helloworld.HelloWorld

こんな感じで実行します。
ディレクトリを変更して、javaコマンドのオプションで、ClassPathを現在のフォルダとして渡して実行しています。
NETBEANSで作成した場合、packageされているので、実行クラス名はhelloworld.HelloWorldというクラス名になります。

大変です!! 上手く起動できません!!

そんな場合は大体がClassPathやらパッケージに起因しています。
よくあるエラーが以下のエラーです。

メインクラス XXX.XXX がみつからなかったかロードできませんでした

>java -cp . helloworld.HelloWorld
エラー: メイン・クラスhelloworld.HelloWorldが見つからなかったかロードできませんでした

原因としては単純で、現在ディレクトリがおかしいです。
HelloWorldを起動しようとして、helloworldフォルダが現在ディレクトリになっていませんか?
パッケージを起動する場合はもう1階層上です。
NETBEANSで出来た構成であればclassesフォルダをカレントディレクトリにしてください。

簡単な図にするとこんな感じ↓

java.lang.NoClassDefFoundError: XXXXX (wrong name: xxxxx/XXXXX)

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong nam
e: helloworld/HelloWorld)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(Unknown Source)
        at java.security.SecureClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.defineClass(Unknown Source)
        at java.net.URLClassLoader.access$100(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

こちらも原因は単純です。
packageされているのに呼び出し方が

java HelloWorld

というように呼び出しているはずです。ついでにいえば現在ディレクトリがもう1階層上にしなくてはいけないと思います。
正しくは

java helloworld.HelloWorld

と呼び出してください。

javaの一番面倒なのは、このpackageとclasspathの考え方だと思いますので、何度か練習してマスターしてください。

ad

関連記事

logo

[Java]DbUtilsでORA-12519エラー

DbUtilsを使ってたんですが、Oracleに対して処理するとORA-12519というエラーコード

記事を読む

logo

[jt400, Java]AS400のファイルを更新するためにREADした時にRecord Lockをかける

RPG3なんかだと更新用のファイルはREADの瞬間に自動でレコードロックがかかります。 で、それを

記事を読む

AS400_

[java, JDBC]AS400からOracleに接続をする

javaでAS400からOracleに接続する必要があったときのメモを清書。 AS400のPG

記事を読む

logo

[Java, jt400]AS400のCLからJavaをCallする方法。

久しぶりにAS400ネタ。 CLからJavaを呼び出したい!! JavaをCLから実行したい

記事を読む

logo

[java, jt400]AS400ネイティブ環境でjavaを起動し、ファイルに対するSQLを実行する方法。

日本語資料なさすぎだから自分で作ります。 AS400がでjavaを起動して、自分のファイルを見に行

記事を読む

NetBeans

[Java, NetBeans]NetBeansをインストールしてHelloWorldまで。

JavaのIDEは? よく挙げられるのがEclipseとNetBeans。 前はExclipse

記事を読む

wannabenote

[Java, Oracle]NetBeansでojdbc6.jarに参照設定をし、JavaでOracleに接続する。

NetBeansでJavaでOracleに接続する そんなプログラムを作りたい。 というわけで作

記事を読む

wannabenote

[jt400, java]AS400用のJavaをPCで実行したとき、終了しない理由

終了しない JavaでAS400をいじってると、たまに、終了しないんです。 プロセスが残ったまま

記事を読む

logo

[Java, DBUtils]ApacheのDBUtilsを利用して、データベースにアクセスする。

手抜きがしたい オブジェクト指向をする上で、o/r mapperが欲しくなります。 かなーり昔に

記事を読む

logo

[jt400, Java]レコードレベルアクセスの実現

到着順 AS400のファイルシステムですと、レコードを読み込んで、処理して、出力して、次のレコード

記事を読む

ad

Message

メールアドレスが公開されることはありません。

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

ad

  •  Auther;わなび

     「オープン系得意だよね? 俺のPCの調子悪いんだけど」という無茶振りから解き放たれゲームエンジニアに。
    C#とかUnityを扱います。
    Twitterフォロー大歓迎です。
    githubアカウント→wannabenote
  • follow us in feedly
PAGE TOP ↑