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

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

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

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

Java

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

Q&A

解決済

1回答

6267閲覧

jarファイルが実行できないです。助けてください。

chinchin0721810

総合スコア6

JAR

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

Java

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

0グッド

0クリップ

投稿2020/05/14 13:50

前提・実現したいこと

eclipseで作成したプログラムをjarファイルにして、それを同じ階層まで行きjavaコマンドを用いて起動しようと思ったのですが画像のようなエラーが出ます。
どうすればよいでしょうか・・・?

最終的にプログラムをjarもしくはexeファイルにしてダブルクリックで開くようにしたいです。

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

C:\Users\c21_b\OneDrive\Documents>java -jar a.jar Exception in thread "main" java.lang.UnsupportedClassVersionError: Hikaru/Arimura/Main has been compiled by a more recent version of the Java Runtime (class file version 55.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 java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:59)

該当のソースコード

試したこと

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

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

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

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

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

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

satokei

2020/05/14 14:12

とりあえずエラーメッセージでググってみましょう。 「java.lang.UnsupportedClassVersionError」とか
m.ts10806

2020/05/14 14:28

いきなりどう組まれて出来上がったのか不明な成果物であるjarから話が始まってますが、 それだと誰も再現できません。 実際のコード、どのようにjarにしたのか 持ちうる情報は全て提示してください。
Yasumichi

2020/05/14 14:32

java -version の結果と Eclipse のプロジェクトの JRE システムライブラリーのバージョンはどうなってますか?
chinchin0721810

2020/05/14 14:35

ググってみました、javacとjavaのバージョンが違うとかってあったので java version "1.8.0_251" Java(TM) SE Runtime Environment (build 1.8.0_251-b08) Java HotSpot(TM) Client VM (build 25.251-b08, mixed mode, sharing) javac 14.0.1 バージョン全然違うのですが、どうしたらいいかわからなくなりました。
chinchin0721810

2020/05/14 14:37

あまりコードの中身を出したくないのです・・・。すみません。。 特段変わったことといえば、selenium webdriver 使ってコードの中でグーグルクローム開いてることくらいですかね。
Yasumichi

2020/05/14 14:38

OS は何ですか?javac があるフォルダーの java が実行できるようにすれば、解決するのでは?
chinchin0721810

2020/05/14 14:43

OSはwindows10の64bitです。 すいません、Javaあまり触ったことがないので、言ってることがわからないです・・・。具体的にどうすればいいのでしょうか。。
Yasumichi

2020/05/14 14:47

Powershell ですか?コマンドプロンプトですか? PowerShell の場合、Get-Command javac でフォルダーの場所が分かります。 コマンドプロンプトの場合、where javac でフォルダーの場所が分かります。 環境変数 PATH でそのフォルダから優先的にコマンドを実行できるように設定する必要があります。
chinchin0721810

2020/05/14 14:50

コマンドプロンプトで実行しております。 C:\Program Files\Java\jdk-14.0.1\bin\javac.exeを環境変数のパスの部分に追加すればよいのでしょうか? 一応C:\Program Files\Java\jdk-14.0.1\bin\これは元々自分で追加してました。
Yasumichi

2020/05/14 14:52

逆に where java でパスを確認し、そちらのパスを抜く方が早いような気がします。あと、JAVA_HOME とか設定しているのであれば、そちらも変更する必要があるかと。
chinchin0721810

2020/05/14 14:56

JAVA_HOMEも中身はC:\Program Files\Java\jdk-14.0.1\bin\javac.exe こちらでよいのでしょうか?
Yasumichi

2020/05/14 15:00

C:\Program Files\Java\jdk-14.0.1 です。
chinchin0721810

2020/05/14 15:03

やりましたが、実行はできないですね。。。
Yasumichi

2020/05/14 15:04

コマンドプロンプトは上げなおしましたか?
Yasumichi

2020/05/14 15:14

where java の結果はどうなっていますか? 実行できないとは、同様のエラーになっているということですか?
chinchin0721810

2020/05/14 15:17

あ、where java の結果は出力されています。 C:\Program Files (x86)\Common Files\Oracle\Java\javapath\java.exe C:\Program Files\Java\jdk-14.0.1\bin\java.exe こうなりました。 変わらず Exception in thread "main" java.lang.UnsupportedClassVersionError: Hikaru/Arimura/Main has been compiled by a more recent version of the Java Runtime (class file version 55.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 java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Unknown Source) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:59) が表示されます
Yasumichi

2020/05/14 15:20

C:\Program Files (x86)\Common Files\Oracle\Java\javapath\ を PATH から消してください。
chinchin0721810

2020/05/14 15:22

消しました。そしたら実行はできました! 実行はできたのですが、途中でこのエラーが出ます。。。 Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61) Caused by: java.lang.IllegalStateException: The driver executable does not exist: C:\Users\c21_b\OneDrive\Documents\Google\chromedriver.exe at com.google.common.base.Preconditions.checkState(Preconditions.java:585) at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:146) at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:141) at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:35) at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:159) at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355) at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94) at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123) at Hikaru.Arimura.HighLowDemo.<init>(HighLowDemo.java:18) at Hikaru.Arimura.Main.main(Main.java:40) ... 5 more
Yasumichi

2020/05/14 15:26

The driver executable does not exist: C:\Users\c21_b\OneDrive\Documents\Google\chromedriver.exe を解消しないといけないかも。
Yasumichi

2020/05/14 15:30

chromedriver.exe の場所を指定する所で相対パスで記述していて、位置関係が狂っているのかな。
chinchin0721810

2020/05/14 15:36

public class HighLowDemo { public HighLowDemo(String amountMoney) { System.setProperty("webdriver.chrome.driver", "Google/chromedriver.exe"); WebDriver driver = new ChromeDriver(); ソースコードの中ではこのようになってます。 位置的にはこのように プロジェクト L src L Mainとかその他クラス L Google L chromedriver.exe L Selenium Lなんかいろいろ
chinchin0721810

2020/05/14 15:39

Javaの実行環境をJava8に落としたところ現状のエラーは以下のようになります。 実行はできるのですが、途中でエラー履きます。 Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:564) at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61) Caused by: java.lang.IllegalStateException: The driver executable does not exist: C:\Users\c21_b\OneDrive\デスクトップ\ 新しいフォルダー (2)\Google\chromedriver.exe at com.google.common.base.Preconditions.checkState(Preconditions.java:585) at org.openqa.selenium.remote.service.DriverService.checkExecutable(DriverService.java:146) at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:141) at org.openqa.selenium.chrome.ChromeDriverService.access$000(ChromeDriverService.java:35) at org.openqa.selenium.chrome.ChromeDriverService$Builder.findDefaultExecutable(ChromeDriverService.java:159) at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:355) at org.openqa.selenium.chrome.ChromeDriverService.createDefaultService(ChromeDriverService.java:94) at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:123) at Hikaru.Arimura.HighLowDemo.<init>(HighLowDemo.java:18) at Hikaru.Arimura.Main.main(Main.java:40) ... 5 more
Yasumichi

2020/05/14 15:41

jar があるフォルダーに Google/ フォルダーを作成し、chromedriver.exe をコピーするなどすれば動くと思います。ただ、本来は、もう少し違うやり方かもしれません。
hope_mucci

2020/05/14 15:42

jarと同じ階層にプロジェクトフォルダの中にあるGoogleフォルダをコピーして実行したらchromedriverが見つからないエラーは解消されるかと思います。
chinchin0721810

2020/05/14 15:43

実行できました!ありがとうございます! 確かに単体で実行できるようにしたいところです・・・。
chinchin0721810

2020/05/14 15:47

System.setProperty("webdriver.chrome.driver", "Google/chromedriver.exe"); この部分を削除し 管理者権限でコマンドプロンプトを開き setx /m path "%path%;C:\WebDriver\bin\" を実行すればよいということでしょうか??
Yasumichi

2020/05/14 15:50

とりあえずコメントアウトでやってみましょう。 パスについては、それでも良いと思います。
chinchin0721810

2020/05/14 15:53

ありがとうございます~!! なんとか、できそうです! 手取り足取りありがとうございました!
Yasumichi

2020/05/14 15:55

とりあえず、解決してよかったです。 以下みたいな話があるようなので GUI でやる方が良いかもしれません。 > PATH の設定 Windows環境変数の設定に「SETX」コマンドを使ってはいけない理由 - Qiita https://qiita.com/jeyei/items/05ce2739501832463b3b
chinchin0721810

2020/05/14 15:57

何から何までありがとうございました! 確認してみます!
guest

回答1

0

ベストアンサー

Exceptionのテキストを読めば何が起こっているのかちゃんとわかります。

Exception in thread "main" java.lang.UnsupportedClassVersionError: Hikaru/Arimura/Main has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

実行環境のランタイムではversion 52.0以下のクラスファイルでしか実行できないが、今から実行したいクラスファイルは55.0だから実行できませんぜ、と言われています。
jarファイルはeclipseで作成したとのことなので、eclipseのコンパイルバージョン指定が新しすぎるのでしょう(55.0はjava11、52.0はjava8)
目下質問者のPCでjarファイルダブルクリックで実行するのが目的であれば、

  • PC側のjava実行環境をjava11以上にする(現行の最新ランタイムをインストール、で構わない)
  • 権限等の関係でそれができないならeclipseでのビルド時にビルドターゲットをjava8にする

のどちらかであろうと考えます。

投稿2020/05/14 15:04

hope_mucci

総合スコア4447

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

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

Yasumichi

2020/05/14 15:10

質問への追記・修正でやり取りしたところ、jdk-14.0.1 は入っているみたいです。
chinchin0721810

2020/05/14 15:13

とても詳しくありがとうございます。 おそらくPC側のjava実行環境は1週間ほど前にPCを買いなおしJava入れなおしたので大丈夫かと思ってます。 eclipseでのビルド時にビルドターゲットをjava8にするやり方を今探しているのですが、よくわかりません。教えていただけませんか?
Yasumichi

2020/05/14 15:22

プロジェクトを右クリック→ビルドパス→ビルドパスの構成 ライブラリーのタブを開く 今の JRE システムライブラリーを消して、ライブラリーの追加 JRE システムライブラリーを選択して、次へ 実行環境を選んで完了です。
hope_mucci

2020/05/14 15:27

追記見ました。java8のJREが入っているようなのでjavaコマンドはJRE側を向いているのでしょう。 %PATH%中で'jre’みたいな文字列が入っているものがあるか探して、あれば削除するとjavaもjdk側に向くかもしれません。
chinchin0721810

2020/05/14 15:33

C:\Windows\system32 C:\Windows C:\Windows\System32\Wbem C:\Windows\System32\WindowsPowerShell\v1.0\ C:\Windows\System32\OpenSSH\ C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR C:\Program Files\Java\jdk-14.0.1\bin\ C:\Program Files\Java\jdk-14.0.1\bin\javac.exe jreは入ってないようです・・。 現状Pathの中はこのようになってます。
Yasumichi

2020/05/14 15:44 編集

さっき消した C:\Program Files (x86)\Common Files\Oracle\Java\javapath\ が該当です。
hope_mucci

2020/05/14 15:43

Yasumichiさんの補足通りです。ありがとうございました。
chinchin0721810

2020/05/14 15:48

とても助かりました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問