Probmkr
@Probmkr (Probmkr)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Java エラー:Mainクラスが見つからない

Q&A

Closed

Java エラー:Mainクラスが見つからない

これからJavaを学習しようと思っているのですが、一番最初のコンパイル・実行の段階でつまずいてしまいました。
ソースはこちらです。↓

main.java
class Main{
  public static void main(String[] args){
    System.out.println("Hello World!");
  }
}

コンパイルはちゃんとできました。

C:\Users\...\Java\Hello World>javac main.java

Annotation 2020-09-02 215956.png


そして、これがエラーコードです。↓

C:\Users\...\Java\Hello World>java Main
Error: Could not find or load main class Main

ネットでいろいろ探してもなかなか解決策が見つかりません。
これはパソコンの問題でしょうか。
わかる人は、教えてください。お願いします!

0

1Answer

CLASSPATH 環境変数がセットされているとこのようなことが起こります。 java コマンドは CLASSPATH に指定されたディレクトリだけからクラスファイルを探索するため、 Main.class があるのに無視されているように見えます。

java -cp . Main とすれば実行できるはずです。 -cp . は現在のディレクトリにあるクラスファイルをロードさせるオプションです。

0Like

Comments

  1. @Probmkr

    Questioner

    C:\Users\...\Java\Hello World>java -cp . Main
    としたら、こんどはこんなエラーが出てきました...。
    Error: A JNI error has occurred, please check your installation and try again
    Exception in thread "main" java.lang.UnsupportedClassVersionError: Main has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    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)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)

    これはjavaのバージョンが合わないからですか?
  2. @Probmkr

    Questioner

    JRE 13 なんてあるんですか。
  3. バージョンが違うようです。 java -version と javac -version を実行してみてください。
  4. Java は14まで出ています。バージョンが合わないのはおそらく JRE と JDK が両方入っているからです。

    - JRE (Java Runtime Environment) Java の実行環境。 `java` が入っている
    - JDK (Java Development Kit) Java の開発環境+実行環境。 `javac` も `java` も入っている

    (最近の Java は JDK だけ提供されています)

    @Thanatos9911 さんの環境には JRE 8 と JDK 13 が入っていて、しかも JRE 8 に入っている `java` が優先されるようになっていると思われます。
  5. @Probmkr

    Questioner

    ありがとうございました。uasiさんのいうとおりJREのパスが優先されていました。そして、そのパスを消したら、ちゃんとJDKの方を参照して、実行できました。本当にありがとうございました。

Your answer might help someone💌