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

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

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

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

解決済

1回答

10628閲覧

コマンドプロンプトの「エラー: メイン・クラス○○○○を検出およびロードできませんでした」のエラーについて

Isikoro

総合スコア9

JAR

JAR(又はJava ARchive)はコンパイルされた複数のJavaバイトコード及び関連ファイルのリソースを一つのファイルに統合したものです。JARファイルはZIPファイルのフォーマットで構築されています。

Java

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2020/08/27 14:28

参考書にある以下の手順で、コマンドプロンプトにて「jarファイルの実行」をしようとした時にエラーが出てしまいます。

Bank.javaの作成

java

1package jp.miyabilink.atm; 2 3/** 4 * 銀行を表すクラス。 5 */ 6public class Bank { 7 /** 銀行の名前 */ 8 String name; 9 /** 銀行の住所 */ 10 String address; 11 /** 12 * 口座を追加する。 13 * @param owner 口座名義人 14 * @param initialBalance 初期残高 15 */ 16 public void addAccount(String owner, int initialBalance) { } 17 public static void main(String[] args) { 18 System.out.println("試験用のメインメソッドです"); 19 } 20}

上記の「Bank.java」を作成しました。

Bank.classの作成

次にコマンドプロンプトにて

javac Bank.java

として「Bank.class」を作成しました。

manifest.txtの作成

続いて、

Manifest

1Manifest-Version: 1.0 2Main-Class: jp.miyabilink.atm.Bank 3```「manifest.txt」を作成しました。 4 5###### atm.jarの作成 6この時点で、 7「Bank.java」 8「Bank.class」 9「manifest.txt」 10の3つのファイルは全て同じフォルダ(現在のフォルダ)に入っています。 11 12その上で、 13> jar -cvfm atm.jar manifest.txt Bank.class 14 15で、「atm.jar」を作成しました。 16 17###### jarファイルの実行 18 19> java -jar atm.jar 20 21とすると、以下のエラーが表示されてしまいます。 22この原因が分からず困っています。 23ご教授いただけますと幸いです。 24 25> エラー: メイン・クラスjp.miyabilink.atm.Bankを検出およびロードできませんでした 26原因: java.lang.ClassNotFoundException: jp.miyabilink.atm.Bank

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

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

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

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

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

guest

回答1

0

ベストアンサー

ディレクトリ構成が正しくありません。
てっとり早く解決するのであれば、package文を取っ払って、Main-lassも修正する。

//package jp.miyabilink.atm; public class Bank { ... } Manifest-Version: 1.0 Main-Class: Bank

package文を残したいのであれば、jp/miyabilink/atmディレクトリを作成して、そこにBank.javaファイルを置き、コンパイルしてjarファイルを作成する。

$ javac jp/miyabilink/atm/Bank.java $ jar -cvfm atm.jar manifest.txt jp $ java -jar atm.jar 試験用のメインメソッドです $ tree . ├── atm.jar ├── jp │   └── miyabilink │   └── atm │   ├── Bank.class │   └── Bank.java └── manifest.txt 3 directories, 4 files

投稿2020/08/27 14:42

編集2020/08/27 14:49
shiketa

総合スコア4061

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

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

Isikoro

2020/08/27 15:18

ご回答ありがとうございます。 >てっとり早く解決するのであれば、package文を取っ払って、Main-lassも修正する。 こちらの方法ではうまく行きました! ただ、 >package文を残したいのであれば、jp/miyabilink/atmディレクトリを作成して、そこにBank.javaファイルを置き、コンパイルしてjarファイルを作成する。 package文を残した方法ですと、このとおりにディレクトリ構造を配置した上で実行(java -jar atm.jar)したのですが、同じエラ―が出てしまいます。何がいけないのでしょうか。。。 エラー: メイン・クラスjp.miyabilink.atm.Bankを検出およびロードできませんでした 原因: java.lang.ClassNotFoundException: jp.miyabilink.atm.Bank
Isikoro

2020/08/28 02:46 編集

すみません、package文を取っ払った方法もうまく行きました! 何か間違ったコマンドをうっていたみたいです。 jar作成コマンド実行時(java -jar atm.jar)のBank.classのディレクトリ配置が、そのままjarフォルダ内でのBank.classの配置になるので、それ以外の配置にすると、Manifest記載のMain-Classの配置と異なることになり、Bank.classを探せないので上記のエラーが出る、と理解しました。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問