2017-10-24 8 views
0

私はヘッドレスLinuxマシンでいくつかのユニットテストを実行していますが、Xvfbサーバーが起動しています。 ブラウザが作成されますが、表示に問題があるようです(例外を参照してください)。Linux上のJxBrowserはNoSuchMethodExceptionをスローします:getWindow

03:53:39 INFO: OS name: Linux 
03:53:39 INFO: JRE version: 1.8.0_31 64-bit 
03:53:39 INFO: JxBrowser version: 6.4 
03:53:39 INFO: JxBrowser type: HEAVYWEIGHT 

私のコードは、私は私のlibフォルダに次の

を持って正常に動作しますが、Linux上で、私は次のようなエラー

Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: getWindow 
at com.teamdev.jxbrowser.chromium.internal.ReflectionUtil.invokeMethod(Unknown Source) 
at com.teamdev.jxbrowser.chromium.swing.internal.NativeLinux.getWindowHandle(Unknown Source) 
at com.teamdev.jxbrowser.chromium.swing.internal.HeavyWeightWidget.a(Unknown Source) 
at com.teamdev.jxbrowser.chromium.swing.internal.HeavyWeightWidget.b(Unknown Source) 
at com.teamdev.jxbrowser.chromium.swing.internal.HeavyWeightWidget$d.hierarchyChanged(Unknown Source) 
at java.awt.Component.processHierarchyEvent(Component.java:6692) 
at java.awt.Component.processEvent(Component.java:6311) 
at java.awt.Container.processEvent(Container.java:2234) 
at java.awt.Component.dispatchEventImpl(Component.java:4881) 
at java.awt.Container.dispatchEventImpl(Container.java:2292) 
at java.awt.Component.dispatchEvent(Component.java:4703) 
at java.awt.Component.createHierarchyEvents(Component.java:5541) 
at java.awt.Container.createHierarchyEvents(Container.java:1443) 
at java.awt.Container.createHierarchyEvents(Container.java:1439) 
at java.awt.Container.createHierarchyEvents(Container.java:1439) 
at java.awt.Container.createHierarchyEvents(Container.java:1439) 
at java.awt.Container.createHierarchyEvents(Container.java:1439) 
at java.awt.Container.createHierarchyEvents(Container.java:1439) 
at java.awt.Component.show(Component.java:1622) 
at java.awt.Window.show(Window.java:1042) 

を取得し、Windows環境では、この

Frame frame = new JFrame("myFrame"); 
Browser browser = new Browser(); 
BrowserView view = new BrowserView(browser); 

frame.add(view, BorderLayout.CENTER); 
frame.setVisible(true); 

に似ています

  • jxbrowser-6.4.jar
  • jxbrowser-linux64-6.4.jar
  • jxbrowser-MAC-6.4.jar
  • jxbrowser-WIN-6.4.jar

と私のテストののbuild.xmlでこの

<fileset dir="${myproject.dir}/lib"> 
    <include name="**/*.jar"/> 
    <exclude name="**/jxbrowser-mac*.jar"/> 
    <exclude name="**/jxbrowser-win*.jar"/> 
</fileset> 

提案がありますか?

答えて

0

デフォルトでは、JxBrowserはヘビー級レンダリングモードで実行されます。このモードでは、Javaアプリケーションウィンドウにネイティブウィンドウを埋め込み、GPUを使用してこのネイティブウィンドウにコンテンツをレンダリングするようにChromiumエンジンを設定します。ネイティブウィンドウを埋め込むためには、Javaアプリケーションのトップレベルウィンドウのハンドルを取得する必要があります。表示される例外は、JxBrowserがそのハンドルを取得できなかったことを示します。どのLinuxディストリビューションを使用しますか?

あなたはヘッドレスLinux環境でJxBrowserを使用すると述べました。この場合、BrowserViewインスタンスを作成してJFrameに埋め込む必要がないため、問題を解決できるはずです。

Browser browser = new Browser(BrowserType.LIGHTWEIGHT); 

また、あなたはウィンドウハンドルを必要としない軽量のレンダリングモードでJxBrowserを使用することができます

関連する問題