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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Java

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

Q&A

解決済

1回答

1975閲覧

JAVAパッケージ間のPATHが通せません

wizkey

総合スコア8

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Java

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

0グッド

0クリップ

投稿2017/11/25 17:28

Java###前提・実現したいこと
Javaの勉強をしています。
パッケージ間のclassPATHをどうしても通すことができず、困っています。
ソースを何度も見直しているのですが、原因がわかりません。
エラーの表示内容は下記のとおりです。

お力添えをお願い致します。

###発生している問題・エラーメッセージ
メイン・クラスCalcを検出及びロードできませんでした
java.lang.NoClassDefFoudError:au/main/Calc(wrong name: Calc)

###該当のソースコード

JAVA

1Calc.java 2package au.main; 3public class Calc{ 4 public static void main(String[] args){ 5 int a =10; int b = 2; 6 int total = au.bb.Cc.tasu(a, b); 7 int delta = au.bb.Cc.hiku(a, b); 8 System.out.println("足すと" + total + "、引くと" + delta); 9 } 10} 11 12 13Cc.java 14package au.bb; 15public class Cc{ 16 public static int tasu(int a, int b){ 17 return(a + b); 18 } 19 public static int hiku(int a, int b){ 20 return(a - b); 21 } 22} 23 24 25###試したこと 26JAVA_HOMEの環境変数が誤っているのではないかと、確認しましたが 27該当のJDKファイルにPATHが通っていました。 28パッケージ名や、Class名のスペルミスを疑い、簡単な文字列に変更しましたが、解決できませんでした。 29また、連動先のclassファイルを認識できていないのではと思い、 30cmdからdirで確認しましたがファイルは間違いなく存在していました。 31 32###補足情報(言語/FW/ツール等のバージョンなど) 33JDK9.0.1使用 34windows10 64bit 35javaはcmdからの起動

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

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

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

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

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

guest

回答1

0

ベストアンサー

クラスパスは、JAVA_HOMEともPATHとも違うものです。

それぞれ次のような意味があります。

PATH
java、javacなどのコマンドプログラムがどこにあるかを指示するもの。

classpath
.classのファイルがどこにあるのかを指示するもの

JAVA_HOME
コンパイル等に直接関係はありません。
JDKを利用する他のプログラムに対して、JDKの場所等を示すもの。

「試したこと」をみるとclasspthを設定していないようですので、これを設定して下さい。
設定の詳細は「java classpth」で検索すれば出てきます。

投稿2017/11/25 17:39

編集2017/11/25 17:40
ngsvx

総合スコア287

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

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

wizkey

2017/11/25 18:09

ご助言をいただきまして、誠にありがとうございます。 早速調べて試してみました。 C:ドライブ下にcalcというファイルを作り、その中で上記のclassファイル2つを移しました。 その後にcmdに対して、「java -classpath C:\calc Calc」とコマンドを実行しましたが質問と同じエラーが返ってきました。 私の行っていることが仰っていただいたことと異なっておりますでしょうか。 それとも別の原因が考えられますでしょうか。 お手数おかけいたしますが、ご回答いただけますと幸いです。 宜しくお願い致します。
ngsvx

2017/11/25 18:16

まず、 「C:ドライブ下にcalcというファイルを作り、」 というのは、 「C:ドライブ下にcalcというディレクトリを作り、」 の間違いですよね? 細かいようですが、このような用語の使い間違いが誤解の元となることがしばしばありますので、ご注意ください。 本題ですが、クラスパスは、デフォルトパッケージの場所を指定しなければなりません。 今回のコードでは package au.main; とパッケージの指示がありますので、 このクラスファイルは、 c:\calc\au\main というディレクトリの中に入れなければなりません。 とりあえず、そのことを試してみて下さい。
ngsvx

2017/11/25 18:21

あっ、もうひとつ。 javaコマンドで指定するのは、ファイル名ではなくクラス名です。 完全修飾クラス名です。 java -classpath C:\calc au.main.Calc としてください。
wizkey

2017/11/26 03:18

ディレクトリの定義とclassファイルの置き方を調べることで、 無事に解決することができました。 初歩的な質問でしたが、丁寧にご回答いただけまして本当にありがとうございました。 前に進むことができました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問