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

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

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

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

Java

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

Q&A

解決済

3回答

5923閲覧

java実行時のカレントディレクトリを指定したい

taro373

総合スコア189

JAR

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

Java

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

0グッド

1クリップ

投稿2020/05/01 07:51

javeについては実用的なプログラミングは一度もしたことのない初心者です。
javaで作成されたアプリを使おうとして、使いにくいことがあり質問します。
アプリ側の仕様なのかもしれませんが、javaの知識がないもので、
「java実行時 カレントディレクトリ」などと調べましたが、方法が見つからず
質問しました。

jarファイルの実行時に、ディレクトリの指定はできないのでしょうか。

GUIで動作するjarファイルがあります。
このようにして起動できています。
$ java -jar hoge.jar

このツールでは「ファイルを開く」や「エクスポート」の機能があります。
起動した時には出力(エクスポート)場合は前回のフォルダが記憶されているようなのですが
新規にファイルを開くときは、HOMEディレクトリが既定値になっています。
java側でHOMEが既定のディレクトリとなるように記述されていると、
起動時には、入力ファイルがあるディレクトリを起動時に指定することはできないのでしょうか。

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

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

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

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

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

guest

回答3

0

ベストアンサー

新規にファイルを開くときは、HOMEディレクトリが既定値になっています。

java側でHOMEが既定のディレクトリとなるように記述されていると、
起動時には、入力ファイルがあるディレクトリを起動時に指定することはできないのでしょうか。

先の回答は的外れだったかな...

ソースが提示されていないので、既定値となるHOMEディレクトリをどうやって取得しているのかはわかりませんが、おそらくシステムプロパティuser.homeから取得しているのではないかと。そうであれば、実行時にシステムプロパティを変更する手もあるのではないでしょうか。

$ java -Duser.home=. -jar hoge.jar

システムプロパティuser.homeを変更することで、また別の問題があらわになるのかもしれません。ご留意を。

投稿2020/05/01 15:23

shiketa

総合スコア4061

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

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

taro373

2020/05/07 08:01

ありがとうございました。 『 -Duser.home=. 』を追記することで、GUIツール起動後の 「ファイル開く」がカレントディレクトリ になりました。 GW中は家庭の事情でパソコンを開けず、 確認が遅れましたことをお詫びします
taro373

2020/05/07 13:42

ありがとうございます PythonでGUIツールを自動実行しようとしています。 自動実行が実用化できる目処がついたら、ソースが入手できるか調べてみます。
guest

0

java側でHOMEが既定のディレクトリとなるように記述されていると、

起動時には、入力ファイルがあるディレクトリを起動時に指定することはできないのでしょうか。

アプリ側の作りの問題です。

そのアプリが「HOME」を利用するように作られており、設定等で変更できないのならどうしようもないです。

カレントディレクトリ云々については、「新規作成時に開くディレクトリはカレントディレクトリを基準にする」という作りになっていれば関係ありますが、そういう作りになってなければ何の関係もありません。

第三者からはそれ以上の回答は不可能なので、どうしてもというのであれば、そのアプリの作成者に質問してください。

投稿2020/05/01 19:49

gentaro

総合スコア8947

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

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

0

カレントディレクトリを変更するのではなく、コマンドを実行したディレクトリが ./ になればいいわけですよね?
では、java -jar hoge.jarを実行するコマンドを用意してみてはどうでしょうか。

java

1import java.nio.file.*; 2public class hoge { 3 public static void main(String[] args) throws Exception { 4 System.out.println(Paths.get("./").toAbsolutePath().normalize()); 5 } 6}

sh

1$ pwd 2/tmp/aaa 3$ javac hoge.java 4 5$ cat go.sh 6#!/bin/sh 7java -cp $(dirname $0) hoge 8 9$ sh /tmp/aaa/go.sh 10/tmp/aaa/ 11 12$ cd /tmp 13$ sh /tmp/aaa/go.sh 14/tmp/ 15 16$ cd 17$ sh /tmp/aaa/go.sh 18/home/yourname/

あとは、go.shに実行権を付与して、PATHを通す。

sh

1$ chmod +x /tmp/aaa/go.sh 2$ export PATH=/tmp/aaa:$PATH 3$ cd 4$ go.sh 5/home/yourname/

コマンドを用意するのが面倒であれば、jarファイルをパス付きで指定する手もあるかと。

sh

1$ cd /tmp 2$ java -jar /home/yourname/jars/hoge.jar

投稿2020/05/01 14:54

編集2020/05/01 15:09
shiketa

総合スコア4061

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問