質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

2回答

5120閲覧

複数パッケージを含んだクラスのコンパイル後の実行エラー回避 (手動

R.lawliet

総合スコア41

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/04/14 02:22

編集2015/04/14 05:28

他のパッケージを含んだクラスを手動でコンパイルし、実行させる練習をしています。
なかなか上手くいかないのでご教授を伺いに来ました。

躓いているのはPackageのコンパイル後の実行です。
以下手順

Cドライブ-root-+-app---bin---Package.java
+-org---etc---TestA.class
+-jp-----co----media----------------TestB.class

1この様なツリーで、Package.javaをコンパイル後に実行が成功したら

TestA success
TestA success

と表示されるTestA、Bを作成しました。

↓TestA

lang

1package org.etc; 2public class TestA { 3 public void write() { 4 System.out.println("TestA success"); 5 } 6}

↓TestB

lang

1package co.media; 2public class TestB { 3 public void write() { 4 System.out.println("TestB success"); 5 } 6}

ここまでは問題無いと思っています。
そしてPackageをappをカレントフォルダとしてコンパイル
↓Package

lang

1package bin; 2import org.etc.TestA; 3import co.media.TestB; 4 5public class Package { 6 public static void main(String[] args) { 7 8 TestA pursueA = new TestA(); 9 pursueA.write(); 10 11 TestB pursueB = new TestB(); 12 pursueB.write(); 13 } 14}

コマンドプロンプト

lang

1C:\root\app>javac -cp ../;../jp ./bin/Package.java

これでC:\root\app\binにPackage.classを作りました。

この後の実行が出来ません。
コマンドプロンプト

lang

1C:\root\app>cd bin 2 3C:\root\app\bin>java Package 4Exception in thread "main" java.lang.NoClassDefFoundError: Package (wrong n 5ame: bin/Package) 6 at java.lang.ClassLoader.defineClass1(Native Method) 7 at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632) 8 at java.lang.ClassLoader.defineClass(ClassLoader.java:616) 9 at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:14 101) 11 at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 12 at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 13 at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 14 at java.security.AccessController.doPrivileged(Native Method) 15 at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 16 at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 17 at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 18 at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 19Could not find the main class: Package. Program will exit.

追記:
kodaiさんのご指摘により
コマンドプロンプト

lang

1appに移動→java bin.Package

を行い、エラーが減りました。
残ったエラーはこちらです><

lang

1C:\root\app\bin>cd ../ 2 3C:\root\app>java bin.Package 4Exception in thread "main" java.lang.NoClassDefFoundError: bin/Package 5Caused by: java.lang.ClassNotFoundException: bin.Package 6at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 7at java.security.AccessController.doPrivileged(Native Method) 8at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 9at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 10at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 11at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 12Could not find the main class: bin.Package. Program will exit.

コマンドプロンプト

lang

1app> java -cp ..;. bin.Package

こちらの入力により、TestAがsuccessになりました。
kodaiさんありがとうございます><

残りBを通すパスを現在思案中です。

コマンドプロンプト

lang

1C:\root\app>java -cp ..;. bin.Package 2TestA success 3Exception in thread "main" java.lang.NoClassDefFoundError: co/media/TestB 4at bin.Package.main(Package.java:11) 5Caused by: java.lang.ClassNotFoundException: co.media.TestB 6at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 7at java.security.AccessController.doPrivileged(Native Method) 8at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 9at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 10at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 11at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

以上が現在の引っかかっているところまでの手順です。
一つでも良いので間違っているところを指摘して頂けると助かります。
JAVA遣いの皆様、どうかよろしくお願いします。

解決しました。
コマンドプロンプト

lang

1C:\root\app>java -cp ../;../jp; bin/Package 2TestA success 3TestB success

今回の自分の学び。
・コンパイルしたクラスを実行する時はパッケージの親フォルダから。
・他のパッケージを参照に取り込む時はclasspathを入力して指定。
・指定する時もパッケージの親フォルダまでを指定。
・複数あるときはセミコロン;
・相対パスは慎重に作らないと結構間違える。

kodaiさんにはとてもお世話になりました!
ありがとうございました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

あとは -cp でクラスパス通せば動かないですか?

app> java -cp ..;. bin.Package

投稿2015/04/14 03:04

kodai

総合スコア759

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

R.lawliet

2015/04/14 04:22

おぉ・・・!! Aだけですがサクセスになりました!! cpはclasspathの略ですね、Aしかパスが通っていない・・・と。 Bを入れる方法を模索してみます。 ↓残りのエラー C:\root\app>java -cp ..;. bin.Package TestA success Exception in thread "main" java.lang.NoClassDefFoundError: co/media/TestB at bin.Package.main(Package.java:11) Caused by: java.lang.ClassNotFoundException: co.media.TestB at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
guest

0

Exception in thread "main" java.lang.NoClassDefFoundError: Package (wrong name: bin/Package)

app に移動して

java bin.Package

ではないでしょうか。

投稿2015/04/14 02:36

kodai

総合スコア759

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

R.lawliet

2015/04/14 02:40

kodaiさんご指摘ありがとうございます。 なるほど、パッケージの上のカレントフォルダから作業すべきだったのですね。 ちょっとエラーの数が減りました。 残ったエラーはこちらです>< C:\root\app\bin>cd ../ C:\root\app>java bin.Package Exception in thread "main" java.lang.NoClassDefFoundError: bin/Package Caused by: java.lang.ClassNotFoundException: bin.Package at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) Could not find the main class: bin.Package. Program will exit. 他にも分かるところがあればご指導頂けると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問