リモートsshターミナルからMacでJavaUIアプリケーションを実行するにはどうすればよいですか?

セルゲイ・グリネフ

更新:最新のmacOSバージョンには適用されません(Mohave +)

Macでは、sshで接続し、DISPLAY設定なしでアプリケーションを実行できます。たとえばopen .、リモート端末からMac画面でFinderを実行します。

これはJavaアプリケーションでは機能しません。

java -jar demo/jfc/Font2DTest/Font2DTest.jar 

スローします:

Exception in thread "main" java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207)
at java.awt.Window.<init>(Window.java:536)
at java.awt.Frame.<init>(Frame.java:420)
at javax.swing.JFrame.<init>(JFrame.java:225)
at Font2DTest.main(Font2DTest.java:1032)

DISPLAY値を使った実験は役に立ちませんでした。

セルゲイ・グリネフ

JDK8では、AWT_FORCE_HEADFUL環境変数を使用してこれを克服できます。

AWT_FORCE_HEADFUL=true java -jar demo/jfc/Font2DTest/Font2DTest.jar 

残念ながら、JDK7には簡単な方法はありません。

この問題は、Macのヘッドレスモードの検出に隠されています。次のコードは、アプリが「アクア」セッションにあることを確認し、そうでない場合はヘッドレスを強制します。

// jdk/src/solaris/native/java/lang/java_props_macosx.c
int isInAquaSession() {
  // environment variable to bypass the aqua session check
  char *ev = getenv("AWT_FORCE_HEADFUL");
  if (ev && (strncasecmp(ev, "true", 4) == 0)) {
    // if "true" then tell the caller we're in an Aqua session without actually checking
    return 1;
  }
  // Is the WindowServer available?
  SecuritySessionId session_id;
  SessionAttributeBits session_info;
  OSStatus status = SessionGetInfo(callerSecuritySession, &session_id, &session_info);
  if (status == noErr) {
    if (session_info & sessionHasGraphicAccess) {
        return 1;
    }
  }
  return 0; 
}

そして

// jdk/src/solaris/native/java/lang/java_props_md.c

// check if we're in a GUI login session and set java.awt.headless=true if not
sprops.awt_headless = isInAquaSession() ? NULL : "true";

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

リモートsshターミナルからMacでJavaUIアプリケーションを実行するにはどうすればよいですか?

分類Dev

名前を知らずにターミナルからアプリケーションを実行するにはどうすればよいですか?

分類Dev

ターミナルからアプリケーションを永久に実行するにはどうすればよいですか?

分類Dev

ターミナルからアプリケーションを永久に実行するにはどうすればよいですか?

分類Dev

Mac OS Xのターミナルから開いたアプリケーションを終了するにはどうすればよいですか?

分類Dev

Linuxターミナルで実行するJavascriptアプリケーションを作成するにはどうすればよいですか?

分類Dev

ターミナルから「アプリケーションの実行」ダイアログを開くにはどうすればよいですか?

分類Dev

ターミナルを閉じた後もアプリケーションを実行し続けるにはどうすればよいですか?

分類Dev

Linuxのターミナルからコンソールアプリケーションを起動するにはどうすればよいですか?

分類Dev

ターミナルからubuntutouchアプリを実行するにはどうすればよいですか?

分類Dev

ターミナルからアプリケーションを起動可能にするにはどうすればよいですか?

分類Dev

ターミナルから実行されたアプリケーションからログまたはエラー出力を取得するにはどうすればよいですか?

分類Dev

ターミナルから実行されたアプリケーションからログまたはエラー出力を取得するにはどうすればよいですか?

分類Dev

ターミナルから通常のアプリケーションのようにjarファイルを実行するにはどうすればよいですか?

分類Dev

ターミナルから通常のアプリケーションのようにjarファイルを実行するにはどうすればよいですか?

分類Dev

現在のアプリケーションから別のアプリケーションを実行するにはどうすればよいですか?

分類Dev

ターミナルからSwiftで記述されたアプリケーションの実行可能ファイルを作成するにはどうすればよいですか?

分類Dev

この単純なPerlCGIスクリプトをMacでターミナルから実行するにはどうすればよいですか?

分類Dev

ターミナルアプリケーションに透過的なラッパーを作成するにはどうすればよいですか?

分類Dev

DRI_PRIME = 1を設定して常に実行するようにアプリケーションを構成するにはどうすればよいですか?ターミナル以外の方法はありますか?

分類Dev

現在実行中のアプリケーションのタスクバータイトルを変更するにはどうすればよいですか?

分類Dev

ターミナルでアプリケーションを起動するにはどうすればよいですか?

分類Dev

SSH-Xアプリケーションをクライアントで実行するにはどうすればよいですか?

分類Dev

RDP(ターミナルサービス)上で実行されているアプリケーションの複数のインスタンスを無効にするにはどうすればよいですか?

分類Dev

SpringアプリケーションでJFrameを実行するにはどうすればよいですか?

分類Dev

HerokuでSpringMVCアプリケーションを実行するにはどうすればよいですか?

分類Dev

HerokuでSpringMVCアプリケーションを実行するにはどうすればよいですか?

分類Dev

HerokuでSpringMVCアプリケーションを実行するにはどうすればよいですか?

分類Dev

nodemonでnodejsアプリケーションを実行するにはどうすればよいですか?

Related 関連記事

  1. 1

    リモートsshターミナルからMacでJavaUIアプリケーションを実行するにはどうすればよいですか?

  2. 2

    名前を知らずにターミナルからアプリケーションを実行するにはどうすればよいですか?

  3. 3

    ターミナルからアプリケーションを永久に実行するにはどうすればよいですか?

  4. 4

    ターミナルからアプリケーションを永久に実行するにはどうすればよいですか?

  5. 5

    Mac OS Xのターミナルから開いたアプリケーションを終了するにはどうすればよいですか?

  6. 6

    Linuxターミナルで実行するJavascriptアプリケーションを作成するにはどうすればよいですか?

  7. 7

    ターミナルから「アプリケーションの実行」ダイアログを開くにはどうすればよいですか?

  8. 8

    ターミナルを閉じた後もアプリケーションを実行し続けるにはどうすればよいですか?

  9. 9

    Linuxのターミナルからコンソールアプリケーションを起動するにはどうすればよいですか?

  10. 10

    ターミナルからubuntutouchアプリを実行するにはどうすればよいですか?

  11. 11

    ターミナルからアプリケーションを起動可能にするにはどうすればよいですか?

  12. 12

    ターミナルから実行されたアプリケーションからログまたはエラー出力を取得するにはどうすればよいですか?

  13. 13

    ターミナルから実行されたアプリケーションからログまたはエラー出力を取得するにはどうすればよいですか?

  14. 14

    ターミナルから通常のアプリケーションのようにjarファイルを実行するにはどうすればよいですか?

  15. 15

    ターミナルから通常のアプリケーションのようにjarファイルを実行するにはどうすればよいですか?

  16. 16

    現在のアプリケーションから別のアプリケーションを実行するにはどうすればよいですか?

  17. 17

    ターミナルからSwiftで記述されたアプリケーションの実行可能ファイルを作成するにはどうすればよいですか?

  18. 18

    この単純なPerlCGIスクリプトをMacでターミナルから実行するにはどうすればよいですか?

  19. 19

    ターミナルアプリケーションに透過的なラッパーを作成するにはどうすればよいですか?

  20. 20

    DRI_PRIME = 1を設定して常に実行するようにアプリケーションを構成するにはどうすればよいですか?ターミナル以外の方法はありますか?

  21. 21

    現在実行中のアプリケーションのタスクバータイトルを変更するにはどうすればよいですか?

  22. 22

    ターミナルでアプリケーションを起動するにはどうすればよいですか?

  23. 23

    SSH-Xアプリケーションをクライアントで実行するにはどうすればよいですか?

  24. 24

    RDP(ターミナルサービス)上で実行されているアプリケーションの複数のインスタンスを無効にするにはどうすればよいですか?

  25. 25

    SpringアプリケーションでJFrameを実行するにはどうすればよいですか?

  26. 26

    HerokuでSpringMVCアプリケーションを実行するにはどうすればよいですか?

  27. 27

    HerokuでSpringMVCアプリケーションを実行するにはどうすればよいですか?

  28. 28

    HerokuでSpringMVCアプリケーションを実行するにはどうすればよいですか?

  29. 29

    nodemonでnodejsアプリケーションを実行するにはどうすればよいですか?

ホットタグ

アーカイブ