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

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

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

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Java

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

Q&A

解決済

1回答

2664閲覧

javaをコマンドラインで実行したらNoClassDefFoundErrorが発生

donut4

総合スコア170

import

自身のプラットフォーム・プログラム・データセットに対して、外部ソースを取り込むプロセスをimportと呼びます。

Java

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

0グッド

0クリップ

投稿2021/05/09 11:16

編集2021/05/09 13:46

java初心者です。
複数ファイルにそれぞれクラスを記述する書き方で実行するとき、
java.lang.NoClassDefFoundErrorが発生します。

エラーの意味はクラスが見当たらないとのことですが
packageやimportの記載が異なっている気がします。
色々調べましたがどこがどう間違っているか見当がつきません。

下記ファイルの配置、ソース、コマンドラインを記載します。
お詳しい方のアドバイスお待ちしています。

##ファイルの配置
C:\Users\USER\Desktop\test\Class1.java
C:\Users\USER\Desktop\test\Class2.java

##ソース

//Class1.java import app.add.Class2; public class Class1 { public static void main(String[] args) { String a = args[0]; String b = args[1]; Class2 clas2 = new Class2(); String ans = clas2 .add(a, b); System.out.println(ans); } }
//Class2.java package app.add; public class Class2 { public static String add(String a, String b) { return a+b; } }

##コマンドライン

//コンパイルは成功する C:\Users\USER\Desktop\test>javac -encoding UTF-8 Class1.java Class2.java //java実行 C:\Users\USER\Desktop\test>java Class1 "aaa" "bbb" Exception in thread "main" java.lang.NoClassDefFoundError: app/add/Class2 at Class1.main(Class1.java:9) Caused by: java.lang.ClassNotFoundException: app.add.Class2 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) ... 1 more パッケージやインポートの記載が異なっている?

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

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

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

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

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

guest

回答1

0

ベストアンサー

  1. Class2.java を、test\app\add に移動してください。
  2. testディレクトリに戻り、javac -encoding UTF-8 Class1.java でコンパイルします。
  3. tree /f すると、Class2のクラスファイルもできていることが確認できます。
  4. あとは実行すれば動く筈。

投稿2021/05/09 14:14

編集2021/05/09 14:15
LouiS0616

総合スコア35668

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

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

donut4

2021/05/11 08:29

できました。ありがとうございます。 Class1.javaとClass2.javaを二つともappフォルダに入れたいのですが可能でしょうか? そのときのpackageやimportの記載はどのようになりますでしょうか?
LouiS0616

2021/05/11 09:05

両方 package app; にして下さい。importは不要です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問