2016-12-30 14 views
4

私はdebianベースのディストリビューションのために私の.debインストーラを生成するためにjdebを使用しています。アプリケーションがエラーなしでインストールされていますが、私はservice myapp startを実行しようとすると、それは、以下の(アプリケーションが動作し続けるが、FXのシーンが表示されることは決してありません)例外だと失敗している:私は単にsudo /etc/init.d/myapp startを実行した場合JavaFX - 原因:java.lang.UnsupportedOperationException:DISPLAYを開くことができません?

2016-12-30 11:19:51,468 [main] INFO o.s.c.s.DefaultLifecycleProcessor - Starting beans in phase 0 
Exception in thread "main" java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:497) 
    at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) 
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) 
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) 
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:58) 
Caused by: java.lang.UnsupportedOperationException: Unable to open DISPLAY 
    at com.sun.glass.ui.gtk.GtkApplication.<init>(GtkApplication.java:68) 
    at com.sun.glass.ui.gtk.GtkPlatformFactory.createApplication(GtkPlatformFactory.java:41) 
    at com.sun.glass.ui.Application.run(Application.java:146) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.startup(QuantumToolkit.java:257) 
    at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:211) 
    at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:675) 
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:695) 
    at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$155(LauncherImpl.java:182) 
    at java.lang.Thread.run(Thread.java:745) 

はまたそれがで実行されますエラーはなく、最初のFXシーンが表示されます。

ベローがjdebのための私のMavenの設定です:

<plugin> 
    <artifactId>jdeb</artifactId> 
    <groupId>org.vafer</groupId> 
    <version>1.5</version> 

    <executions> 
     <execution> 
      <id>appassembler</id> 
      <phase>package</phase> 
      <goals> 
       <goal>jdeb</goal> 
      </goals> 
      <configuration> 
       <deb>${project.build.directory}/${project.build.finalName}.deb</deb> 
       <snapshotExpand>false</snapshotExpand> 
       <!-- expand "SNAPSHOT" to what is in the "USER" env variable --> 
       <snapshotEnv>USER</snapshotEnv> 
       <verbose>true</verbose> 
       <controlDir>${basedir}/src/deb/control</controlDir> 
       <dataSet> 
        <data> 
         <src>${project.build.directory}/${project.build.finalName}-uber.jar</src> 
         <type>file</type> 
         <mapper> 
          <type>perm</type> 
          <prefix>/opt/stone/${project.build.finalName}</prefix> 
          <filemode>755</filemode> 
          <user>root</user> 
          <group>root</group> 
         </mapper> 
        </data> 
        <data> 
         <src>src/deb/upstart/${project.build.finalName}.conf</src> 
         <type>file</type> 
         <mapper> 
          <type>perm</type> 
          <prefix>/opt/stone/${project.build.finalName}</prefix> 
          <filemode>755</filemode> 
          <user>root</user> 
          <group>root</group> 
         </mapper> 
        </data> 
       </dataSet> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

そして、ここに私のポストインストールスクリプトがあります:

#!/bin/bash 

echo Creating symblink... 
sudo ln -s /opt/stone/acs/acs-uber.jar /etc/init.d/acs 

echo Creating service... 
sudo update-rc.d acs start 98 5 . 

echo Starting service... 
sudo service acs restart 
+3

サービスはバックグラウンドで実行され、インタラクティブにすることはできません。ユーザーインターフェイスは使用できません。 – VGR

+0

こういうアプリケーションをデーモンと同じように呼び出す方法はありますか? – romerorsp

+0

コメントありがとうございました – romerorsp

答えて

0

Ubuntuの上でrootとしてのJavaFXと私のために働いた他の場所からの回答を引用.. これは他人を助けることができるかもしれません。私はあなたと同じ質問をしましたが、普通のユーザーの場合は同じです。ユーザーアカウントfooを使ってfirefoxを起動したいとしましょう。私はバーとしてログインしている:(つまり、何もプロトコルが指定されていない質問に同じエラーで失敗したコマンド

[バー@ localhostの〜] $ sudoを-u fooという-H Firefoxの

悲しい&開くことができません。 display)

私の解決方法は、Xサーバーへのアクセス許可リストにユーザーfooを追加することでした。

は、xhost SI:localuserの:fooの

そして、それはそれだった、私はsudoのとユーザーFOOを使用して、その後のFirefox(および他のXアプリケーション)を起動することができました。

関連する問題