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

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

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

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

Q&A

解決済

1回答

2161閲覧

【JAVA】複数クラスを持つプログラムの実行時エラーの解決

yhyh02

総合スコア1

Java

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

0グッド

0クリップ

投稿2021/04/29 14:09

編集2021/04/29 14:19

前提・実現したいこと

javaのVisual Studio Codeで、複数のクラスを扱うプログラム作成の練習をしています。
コンパイルはできたのですが、実行ができません。

発生している問題・エラーメッセージ

Main、check、Inputの三つのクラスをコンパイルし、実行しました。

エラー: メイン・クラスMainを検出およびロードできませんでした 原因: java.lang.NoClassDefFoundError: pwcheck/Main (wrong name: Main)

該当のソースコード

JAVA

1package pwcheck; 2import pwcheck.Input; 3import pwcheck.Account; 4import java.io.IOException; 5 6public class Main{ 7 public static void main(String[] args) throws IOException{ 8 . 9 . 10 . 11 } 12}

JAVA

1package pwcheck; 2 3public class check{ 4 5 public boolean checkPassword(int pw){ 6 . 7 . 8 . 9 } 10}

JAVA

1package pwcheck; 2 3import java.io.BufferedReader; 4import java.io.IOException; 5import java.io.InputStreamReader; 6 7public class Input{ 8 public int password() throws IOException{ 9 . 10 . 11 . 12 } 13}

試したこと

フォルダの位置を何度も確認し、import文やタイプミスも確認しましたが、実行できませんでした。

補足情報(FW/ツールのバージョンなど)

フォルダ位置
Mainクラス:Documents\JAVA\pwcheck
Input・checkクラス:Documents\JAVA\pwcheck\pwchecksub

cmdでの実行時コード
C:\Users\(略)\Documents\JAVA\pwcheck> java Main

JAVA学習初心者の為至らないところが多々あると思いますが教えていただけると幸いです。よろしくお願いします。

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

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

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

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

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

m.ts10806

2021/04/29 14:20

コンパイル後のclassファイルはどこにあるのでしょう。
yhyh02

2021/04/29 14:38

ご対応ありがとうございます。 classファイルが「フォルダ位置」に示した場所にあります。 分かりづらくて申し訳ございません。
guest

回答1

0

ベストアンサー

パッケージ名を指定していないからだと思います。
ひとつ親のディレクトリ(C:\Users\(略)\Documents\JAVA)でjava pwcheck.Mainと実行してみるとどうでしょうか。

投稿2021/04/29 14:51

pg-tips

総合スコア57

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

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

yhyh02

2021/04/30 13:55

ご対応ありがとうございます。 MainのクラスファイルをJAVAフォルダにうつして、java pwcheck.Mainで実行してみたのですが、同じエラーメッセージが出てきてしまいました。。。
pg-tips

2021/04/30 15:08 編集

説明が足りなくてすみません。 クラスファイルは移動しなくてOKです。 packageはフォルダと同じようなものと考えてみるとよいかもです。 構成 └─JAVA   └─pwcheck     │ Main.class     │ Main.java     │     └─pwchecksub         check.class         check.java         Input.class         Input.java この構成で、JAVAフォルダでjava pwcheck.Mainと実行します。 あと、checkとInputがpwchecksubフォルダにあるのでjavaファイルの1行目のpackage指定も間違っているようです。(フォルダの構成に合わせる必要があります) check.javaとInput.java ×package pwcheck; ○package pwcheck.pwchecksub; それに合わせて、Main.javaでimportしている箇所でもpwcheck.pwchecksub.Inputのようにする必要があります。
yhyh02

2021/05/01 12:55

ありがとうございます!理解が及ばず、申し訳ないです。 お教えいただいた通りに、パッケージ指定を直したら無事実行することができました。 「packageはフォルダと同じように」という考え方が自分にはなかったので、大変参考になりました。 余談ですが同じフォルダ構成で、 Main.javaのpackageを外し、 check.javaとInput.javaを package pwcheck;のままにすると、 pwcheckフォルダでjava Mainでも実行することができました。 どちらのパッケージ指定が主流などはあるのでしょうか。
pg-tips

2021/05/01 13:24

一般的にはメインクラスにパッケージ名をつけることが多いと思います。 (Main.javaにpackageはつける) とはいえ、そのあたりは追々理解していければよいのかなと思います。 ちょっとした動作確認くらいであればMain.javaにpackageをつけなくても問題ありません。(やりやすいほうでOKです)
yhyh02

2021/05/02 13:00

メインクラスにもパッケージをつけることが多いのですね。 この度は問題も解決して、質問にもお答えくださってほんとうにありがとうございます。 少しずつ勉強頑張っていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問