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

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

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

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

Java

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

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

4回答

3868閲覧

jarファイル実行時にVM変数?を引き渡す方法

opoonabst

総合スコア264

JAR

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

Java

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

Swing

SwingはJavaに標準で付属するグラフィック関連のクラスライブラリを指します。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2016/06/25 01:18

編集2016/06/25 02:16

Java初心者です。

最近Swingでちょっとしたデスクトップアプリを作成しました。

このアプリ(jarファイル)の起動時に任意のVM変数、
具体的には-Dapple.awt.UIElement=true(MacのDock上にアイコンを表示しないという意味)
を指定しようと思っているのですが、やり方がわかりません。

Eclipseの開発環境上で「実行の構成」→「VM変数に-Dapple.awt.UIElement=trueを指定」→「実行」

やterminal上で「java -Dapple.awt.UIElement=true -jar hoge.jar」

とやればうまくいくのですが、これを普通にjarファイルをダブルクリックした際も同様に指定するような方法ってないでしょうか?

ちなみにこのjarファイルはEclipseのエクスポートから実行可能なjarファイルを指定し生成したものです。

ちょっとした自分用アプリなんで現在は上記のJava実行コマンドを実行するシェルスクリプトを書いてなんとかやってるのですが、このやり方はスタンダードなのでしょうか・・・

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

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

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

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

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

guest

回答4

0

ベストアンサー

環境がないので確認できていませんが、
https://developer.apple.com/library/mac/documentation/Java/Reference/Java_InfoplistRef/Articles/JavaDictionaryInfo.plistKeys.html#//apple_ref/doc/uid/TP40001969-DontLinkElementID_1
によれば、

/usr/share/java/Tools にある Jar Bundler とか、/Developer/Applications/Utilities にある Property List Editor を使えば Info.plist にいろいろ設定できるようです。

使ったことはないです。

投稿2016/06/25 03:06

編集2016/06/25 03:17
matobaa

総合スコア2493

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

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

0

今回の目的以前に.jarより.app化した方が何かと便利だろうということで
今回はmatobaa様のJar Bundlerを使うという方法を採用しました。

ただ、調べたところ現在最新のOSX(或いはXcode?)ではもうJar Bundlerは提供されていないらしく、
代替方法としてAppMakerというフリーソフトを利用し.app化及びDockから非表示にすることに成功しました
https://www.ht.sfc.keio.ac.jp/~takuro/blog/files/4bf92372f089ad1b1e0a3fe4c1052fd2-18.html

他の方々も解答ありがとうございました。

投稿2016/06/25 05:56

編集2016/06/25 05:57
opoonabst

総合スコア264

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

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

0

Manifest.mf に書く方法がないかなーと思って探したのですが、見つかっていません。

任意の変数を起動時に設定するという方法ではないですが、UI関係の設定に限定してよいのであれば、

https://developer.apple.com/library/mac/documentation/Java/Reference/Java_PropertiesRef/Articles/JavaSystemProperties.html
に、こんな記述があります:

System.setProperty("apple.laf.useScreenMenuBar", "true");

When setting a property within your application (using System.setProperty), make sure that it is one of the first statements made inside of your main method. Doing so sets the property before AWT is loaded, ensuring that it takes effect.

「アプリ内で設定するなら mainメソッドの最初のほうに書くこと。AWTが呼ばれる前に設定されれば効果がある」

投稿2016/06/25 02:59

matobaa

総合スコア2493

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

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

0

apple.awt.UIElement=true という値が常に固定でいいのであれば、
Propertiesファイルを作ってアプリ内で読み込むというのが出来ると思います。

そのPropertiesファイルごとJarファイルを作ってあげれば、ダブルクリックでいけるはずです。

場合によって変えたいということであれば、シェルスクリプトなりでターミナル上で変えるのが正しい方法だと思いますよ。

投稿2016/06/25 02:38

Mr_Roboto

総合スコア2208

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問