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

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

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

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

Q&A

解決済

1回答

698閲覧

jarファイルが起動できません

Junzi_Kawamura

総合スコア5

Java

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

0グッド

0クリップ

投稿2021/10/31 08:01

前提・実現したいこと

正常にプログラムが起動でき、Hello Worldと表示したい

Javaを今日から触りました。
https://qiita.com/syuchan1005/items/46f94412f7493d6e60eb
に従って「実行可能jarの作成」を行ったところ
実行されませんでした。

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

画像のように、jarファイルが起動できない
イメージ説明

該当のソースコード

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

試したこと

test1.py.jarのダブルクリック

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

Intellij IDEAで作成したファイルです。

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

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

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

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

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

BeatStar

2021/10/31 08:36

なんでファイル名にpyが入っているのでしょうか。( test1.py.jar )
Junzi_Kawamura

2021/10/31 09:15

それが…気づいたら.pyが入っていました。 以前pythonでtest1.pyというファイルを作ったから入力候補として自動的に入力されたかもしれません。 プロジェクト名の変更をしたいのですができなくて困っています。 どのようにすればよいでしょうか?
guest

回答1

0

ベストアンサー

ファイルの関連付けを javaw.exe 等にすれば .jar ファイルをダブルクリックで起動できるようになります。
ただし、レジストリの修正を伴う為、良く分からないようであればやめておいた方が無難です。

<対応方法>
.jar ファイルの関連付けを javaw.exe に変更する。
・下記レジストリキーに登録のある javaw.exe の起動オプションに -jar を追加する。
コンピューター\HKEY_CLASSES_ROOT\Applications\javaw.exe\shell\open\command

<参考情報>
■ 実行可能なjarファイルが起動しない
https://teratail.com/questions/95103

投稿2021/10/31 08:43

編集2021/10/31 08:46
cx20

総合スコア4633

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

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

Junzi_Kawamura

2021/10/31 09:24

返信ありがとうございます。 すみません、javaw.exeではダブルクリックしても反応しなかったのですが、java.exeでは一瞬だけコンソールが開いて すぐに閉じました。 コンソールが表示されたままにして、実際にHelloWorldが表示されたようにしたいです。 どうすればよいでしょうか?
cx20

2021/10/31 09:29 編集

> javaw.exeではダブルクリックしても反応しなかった おっと。失礼しました。javaw.exe は GUI 用なのでコンソール出力(System.out.println() 等)をするプログラムには向いていません。 > コンソールが表示されたままにして、実際にHelloWorldが表示されたようにしたいです。 単純にコマンドプロンプトで .jar 形式のプログラムを実行したいのでしたら、 java.exe -jar プログラム名.jar を実行すれば表示されるかと思います。
Junzi_Kawamura

2021/10/31 10:19

大変ご丁寧な返信ありがとうございます。 C:\Users\<user name>\IdeaProjects\test1.py\out\artifacts\test1_py_jar>java.exe -jar test1.py.jar 'java.exe' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と表示されます。java.exeがきちんと起動しないようです。。。 パスを通す方法を教えていただけませんか? 何度もすみません。
cx20

2021/10/31 10:22

> パスを通す方法 コマンドプロンプトの場合、以下になります。 SET PATH=<java.exeのあるフォルダ>;%PATH%
Junzi_Kawamura

2021/10/31 10:54

ありがとうございます。 コマンドブロンプトで以下のように打ちました。 SET PATH=C:\Users\<user name>\IdeaProjects\test1.py\out\artifacts\test1_py_jar\java.exe;%PATH% (戻り値なし) java.exe -jar test1.py.jar 'java.exe' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 となります。。。
cx20

2021/10/31 11:18 編集

PATH 自体に java.exe の記載は必要ありません。(PATH は実行ファイルが置かれているディレクトリを指定するものである為です。) 変更前)SET PATH=C:\Users\<user name>\IdeaProjects\test1.py\out\artifacts\test1_py_jar\java.exe;%PATH% 変更後)SET PATH=C:\Users\<user name>\IdeaProjects\test1.py\out\artifacts\test1_py_jar;%PATH% ちなみに、java.exe の場所って、 C:\Users\<user name>\IdeaProjects\test1.py\out\artifacts\test1_py_jar\java.exe で合っていますか? 通常 <jdk パス>\bin\java.exe になるかと思うのですが・・・
Junzi_Kawamura

2021/10/31 12:12

何度もありがとうございます。恐縮です。。 おっしゃるとおり、再度検索をかけたところ、java.exeのパスも違っておりました。すみません。。 SET PATH=C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.2.3\jbr\bin;%PATH% java.exe -jar C:\Users\<user name>\IdeaProjects\test1.py\out\artifacts\test1_py_jar\test1.py.jar で実行できました!! ただ、戻り値が エラー: メイン・クラスHelloWorldのロード中にLinkageErrorが発生しました java.lang.UnsupportedClassVersionError: HelloWorld has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 55.0 となってしまいました。
cx20

2021/10/31 12:18

class file のバージョンと Java のバージョンの関係ですが 60.0 … Java 16 55.0 … Java 11 となります。 ちなみに、コマンドプロンプトで java -version と入力したらバージョンいくつが表示されますか?
Junzi_Kawamura

2021/10/31 12:23

ありがとうございます。 他の検索も見ましたがjavac -versionも念のため載せておきます。 java -versionは openjdk version "11.0.12" 2021-07-20 OpenJDK Runtime Environment JBR-11.0.12.7-1504.40-jcef (build 11.0.12+7-b1504.40) OpenJDK 64-Bit Server VM JBR-11.0.12.7-1504.40-jcef (build 11.0.12+7-b1504.40, mixed mode) javac -versionは javac 11.0.12 となっております。よろしくお願いいたします。
cx20

2021/10/31 12:29

エラーメッセージの意味としては、 Java 16 でコンパイルしたクラスファイルを Java 11 で実行できない、 というようなエラーになります。 意図せず Java 16 でビルドしているのではないでしょうか?(IntelliJ IDEA は使ったことが無いので、そのあたりの設定は良く分かりません。)
Junzi_Kawamura

2021/10/31 12:41

おそらくなのですが、 openjdk 17 でビルドしていると思います。 プロジェクトSDKがopenjdkとなっておりました。 これを11にすればよいでしょうか?
cx20

2021/10/31 12:43

どちらかに合わせてたら良いかと思います。 OpenJDK17が入っているのであれば、そのパスを追加してあげたらコマンドラインで実行できるかと思います。
Junzi_Kawamura

2021/10/31 13:07

返信ありがとうございます。 coretto 11 でビルドしなおしてみましたが、同じエラー エラー: メイン・クラスHelloWorldのロード中にLinkageErrorが発生しました java.lang.UnsupportedClassVersionError: HelloWorld has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 55.0 となりました。 あきらめてOpenJDK17のパスを追加しようと思っています。 openjdkで検索をかけたところ、C:\Users\<user name>.jdks\openjdk-17.0.1 がOPENJDKのディレクトリだと思います。 SET PATH=C:\Users\<user name>.jdks\openjdk-17.0.1 を入力すればよろしいでしょうか? ちなみに、このディレクトリの中身は bin,conf,includeなど7つのフォルダがありました。
cx20

2021/10/31 13:10

> SET PATH=C:\Users\<user name>.jdks\openjdk-17.0.1 を入力すればよろしいでしょうか? 「\bin」まで入力する必要があります。 もしくは、慣例にならうなら JAVA_HOME に一旦設定して、%JAVA_HOME%\bin と指定する感じでしょうか。 SET JAVA_HOME=C:\Users\<user name>.jdks\openjdk-17.0.1 SET PATH=%JAVA_HOME%\bin;%PATH%
Junzi_Kawamura

2021/10/31 13:20

Hello world! が表示されました! 長い間粘り強く付き合っていただき、ありがとうございます。本当に感謝しております。 まとめると SET JAVA_HOME=C:\Users\<user name>.jdks\openjdk-17.0.1 SET PATH=%JAVA_HOME%\bin;%PATH% java.exe -jar C:\Users\<user name>\IdeaProjects\test1.py\out\artifacts\test1_py_jar\test1.py.jar となりました。 ありがとうございました!!
cx20

2021/10/31 13:21

> Hello world! おお。表示されたようで何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問