ショートストーリー
すべてのJava呼び出しに対してjava.awt.headless
プロパティをに設定するシステムレベルの方法が必要です。つまり、Javaはアクセスできない場所から呼び出されているため(たとえば、Java / Cなどで記述された別のツール内から)、使用することはできません。true
-Djava.awt.headless=true
長い話
私は、AWTクラスに依存するJavaで記述された一連のツール(特にAdobeのAir ADT)を使用しています。これらのツールをコンソールで実行すると、正常に動作します。しかし、SSHセッションから実行すると、で失敗しjava.lang.InternalError: Can't connect to window server - not enough permissions
ます。グーグルで調べてみると、java.awt.headlessをtrueに設定すると問題が解決することがわかりました。そうではありません。これは、ADT自体が。なしで子Javaプロセスを -Djava.awt.headless=true
生成するためです。
Javaが呼び出されるたびにこのプロパティが設定されるようにするシステムレベルの方法はありますか?たぶん、いくつかのシステムawtプロパティファイルまたは同等のもの?
最悪のシナリオ/usr/bin/java
では、この引数をに追加するシェルスクリプトに置き換えてみることができます"$@"
が、それを避けたいと思っています。(更新:私の理論が正しいことを確認するために、このシェルスクリプトハックを試してみてください。問題は解決します。よりクリーンな解決策を期待しています)