2017-02-03 14 views
3

JavaプロジェクトでMavenプロファイルを使用しました。Mavenプロファイルの依存関係がJxBrowserの他の依存関係の中にある

pom.xmlにweb-processing-jxbrowserモジュールを作成しました.linux-deploy、mac-deploy、windows-deployの3つのプロファイルがあります。

1つのlib(依存関係はありません)に依存している場合はうまく動作しますが、jxbrowserの場合は違って見えます(動作しません)。

<?xml version="1.0" ?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.teamdev.jxbrowser</groupId> 
    <artifactId>jxbrowser-mac</artifactId> 
    <version>6.12</version> 
    <dependencies> 
     <dependency> 
      <groupId>com.teamdev.jxbrowser</groupId> 
      <artifactId>jxbrowser</artifactId> 
      <version>6.12</version> 
     </dependency> 
    </dependencies> 
</project> 

私もダウンロードしてリポジトリを設定しまっ:メインjxbrowser libにすると、それはそのように見える -

<profiles> 

    <profile> 
     <id>windows-deploy</id> 

     <dependencies> 
      <dependency> 
       <groupId>com.teamdev.jxbrowser</groupId> 
       <artifactId>jxbrowser-win</artifactId> 
       <version>${jxbrowser.version}</version> 
      </dependency> 
     </dependencies> 
    </profile> 

    <profile> 
     <id>mac-deploy</id> 

     <dependencies> 
      <dependency> 
       <groupId>com.teamdev.jxbrowser</groupId> 
       <artifactId>jxbrowser-mac</artifactId> 
       <version>${jxbrowser.version}</version> 
      </dependency> 
     </dependencies> 
    </profile> 

    <profile> 
     <id>linux-deploy</id> 

     <dependencies> 
      <dependency> 
       <groupId>com.teamdev.jxbrowser</groupId> 
       <artifactId>jxbrowser-linux64</artifactId> 
       <version>${jxbrowser.version}</version> 
      </dependency> 
     </dependencies> 
    </profile> 

</profiles> 

そして、私が見たときのために、たとえばMAC-展開は内部jxbrowser-macそれは他の依存関係の内側になりました右libs:

<repositories> 
    <repository> 
     <id>com.teamdev</id> 
     <url>http://maven.teamdev.com/repository/products</url> 
    </repository> 
</repositories> 

...とコンパイルでは正しいlibsをダウンロードします(私は外部ライブラリで見ます)。

ライセンス依存性が<dependencies>...</dependencies>に正しい追加となりますそのようにされています

<dependency> 
    <groupId>license</groupId> 
    <artifactId>license</artifactId> 
    <version>${jxbrowser.version}</version> 
    <scope>system</scope> 
    <systemPath>${basedir}/resources/libs/license.jar</systemPath> 
</dependency> 

これはよくコンパイルが、私は、アプリケーションを実行しようとすると、それがメインjxbrowserのlibを見つけることができません。

私は以下のように<dependencies>...</dependencies>このlibの依存関係を追加することで、一時的な解決策が見つかりました:

<dependencies> 

    <dependency> 
     <groupId>license</groupId> 
     <artifactId>license</artifactId> 
     <version>${jxbrowser.version}</version> 
     <scope>system</scope> 
     <systemPath>${basedir}/resources/libs/license.jar</systemPath> 
    </dependency> 

    <dependency> 
     <groupId>com.teamdev.jxbrowser</groupId> 
     <artifactId>jxbrowser-win</artifactId> 
     <version>${jxbrowser.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.teamdev.jxbrowser</groupId> 
     <artifactId>jxbrowser-mac</artifactId> 
     <version>${jxbrowser.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>com.teamdev.jxbrowser</groupId> 
     <artifactId>jxbrowser-linux64</artifactId> 
     <version>${jxbrowser.version}</version> 
    </dependency> 

</dependencies> 

を...しかし、私は、現在のプラットフォーム上で、一度それらの必要がある場合、すべてのlibsをダウンロードする必要はありません。

コンパイル作品の後(jxbrowserが正しい実行されている)が、質問があります:

依存性がプロファイルによって入力されたときのlibsが同様に含まれていないのはなぜか?私は他の依存関係の内部依存関係を持ついくつかの問題があると思います

- (いない内の他の依存関係とはlibにここ1つのLIBの依存があるので)それが動作する - 私は、他のモジュールで同じ設定を使用

エラー

jxbrower libに依存jxbrowser-mac内部への依存性として)アプリrunnigながら:

java.lang.NoClassDefFoundError: com/teamdev/jxbrowser/chromium/swing/BrowserView 
    at com.goodsoft.stockbox.jxbrowser.JxBrowser.initAndDisplayUI(JxBrowser.java:34) 
    at com.goodsoft.stockbox.market.view.window.StockBoxWindowController.lambda$createMenuWindow$17(StockBoxWindowController.java:211) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376) 
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) 
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) 
    at java.awt.Component.processMouseEvent(Component.java:6535) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6300) 
    at java.awt.Container.processEvent(Container.java:2236) 
    at java.awt.Component.dispatchEventImpl(Component.java:4891) 
    at java.awt.Container.dispatchEventImpl(Container.java:2294) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
    at java.awt.Container.dispatchEventImpl(Container.java:2280) 
    at java.awt.Window.dispatchEventImpl(Window.java:2750) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 
    at java.awt.EventQueue$4.run(EventQueue.java:731) 
    at java.awt.EventQueue$4.run(EventQueue.java:729) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Caused by: java.lang.ClassNotFoundException: com.teamdev.jxbrowser.chromium.swing.BrowserView 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 40 more 

EDITを

私はMac用のリソースを見つけることができないエラーを取得し、メインjxbrowserのlibに<dependencies>...</dependencies>に依存関係を追加する場合:

12:03:25 SEVERE: The /chromium-mac.xz resource cannot be found in JAR files 
java.lang.ClassNotFoundException: com.teamdev.jxbrowser.chromium.internal.res.IDEAJARAnalyzerFixMac 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at com.teamdev.jxbrowser.chromium.internal.v.a(SourceFile:94) 
    at com.teamdev.jxbrowser.chromium.internal.v.a(SourceFile:33) 
    at com.teamdev.jxbrowser.chromium.internal.b.run(SourceFile:1054) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.teamdev.jxbrowser.chromium.internal.ChromiumExtractor.extract(SourceFile:47) 
    at com.teamdev.jxbrowser.chromium.internal.ipc.IPC.<init>(SourceFile:1096) 
    at com.teamdev.jxbrowser.chromium.internal.ipc.IPC.create(SourceFile:49) 
    at com.teamdev.jxbrowser.chromium.internal.ipc.IPC$a.<clinit>(SourceFile:39) 
    at com.teamdev.jxbrowser.chromium.internal.ipc.IPC.getDefault(SourceFile:43) 
    at com.teamdev.jxbrowser.chromium.BrowserContext.<init>(SourceFile:63) 
    at com.teamdev.jxbrowser.chromium.BrowserContext.<clinit>(SourceFile:25) 
    at com.teamdev.jxbrowser.chromium.Browser.<init>(SourceFile:131) 
    at com.goodsoft.stockbox.jxbrowser.TabFactory.createTab(TabFactory.java:27) 
    at com.goodsoft.stockbox.jxbrowser.TabFactory.createFirstTab(TabFactory.java:19) 
    at com.goodsoft.stockbox.jxbrowser.JxBrowser.initAndDisplayUI(JxBrowser.java:34) 
    at com.goodsoft.stockbox.market.view.window.StockBoxWindowController.lambda$createMenuWindow$17(StockBoxWindowController.java:211) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376) 
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) 
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) 
    at java.awt.Component.processMouseEvent(Component.java:6535) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6300) 
    at java.awt.Container.processEvent(Container.java:2236) 
    at java.awt.Component.dispatchEventImpl(Component.java:4891) 
    at java.awt.Container.dispatchEventImpl(Container.java:2294) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
    at java.awt.Container.dispatchEventImpl(Container.java:2280) 
    at java.awt.Window.dispatchEventImpl(Window.java:2750) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 
    at java.awt.EventQueue$4.run(EventQueue.java:731) 
    at java.awt.EventQueue$4.run(EventQueue.java:729) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 

12253 [AWT-EventQueue-0] ERROR root - [APP] Application error 
java.lang.ExceptionInInitializerError 
    at com.teamdev.jxbrowser.chromium.internal.ipc.IPC.getDefault(SourceFile:43) 
    at com.teamdev.jxbrowser.chromium.BrowserContext.<init>(SourceFile:63) 
    at com.teamdev.jxbrowser.chromium.BrowserContext.<clinit>(SourceFile:25) 
    at com.teamdev.jxbrowser.chromium.Browser.<init>(SourceFile:131) 
    at com.goodsoft.stockbox.jxbrowser.TabFactory.createTab(TabFactory.java:27) 
    at com.goodsoft.stockbox.jxbrowser.TabFactory.createFirstTab(TabFactory.java:19) 
    at com.goodsoft.stockbox.jxbrowser.JxBrowser.initAndDisplayUI(JxBrowser.java:34) 
    at com.goodsoft.stockbox.market.view.window.StockBoxWindowController.lambda$createMenuWindow$17(StockBoxWindowController.java:211) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) 
    at javax.swing.AbstractButton.doClick(AbstractButton.java:376) 
    at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833) 
    at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877) 
    at java.awt.Component.processMouseEvent(Component.java:6535) 
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) 
    at java.awt.Component.processEvent(Component.java:6300) 
    at java.awt.Container.processEvent(Container.java:2236) 
    at java.awt.Component.dispatchEventImpl(Component.java:4891) 
    at java.awt.Container.dispatchEventImpl(Container.java:2294) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) 
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) 
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) 
    at java.awt.Container.dispatchEventImpl(Container.java:2280) 
    at java.awt.Window.dispatchEventImpl(Window.java:2750) 
    at java.awt.Component.dispatchEvent(Component.java:4713) 
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) 
    at java.awt.EventQueue.access$500(EventQueue.java:97) 
    at java.awt.EventQueue$3.run(EventQueue.java:709) 
    at java.awt.EventQueue$3.run(EventQueue.java:703) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) 
    at java.awt.EventQueue$4.run(EventQueue.java:731) 
    at java.awt.EventQueue$4.run(EventQueue.java:729) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) 
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) 
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) 
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82) 
Caused by: com.teamdev.jxbrowser.chromium.internal.ChromiumExtractorException: Failed to extract chromium binaries into /var/folders/51/jhnyhq212kz_nkn_0wq5j8000000gn/T/jxbrowser-chromium-55.0.2883.87.6.12 
    at com.teamdev.jxbrowser.chromium.internal.ChromiumExtractor.extract(SourceFile:75) 
    at com.teamdev.jxbrowser.chromium.internal.ipc.IPC.<init>(SourceFile:1096) 
    at com.teamdev.jxbrowser.chromium.internal.ipc.IPC.create(SourceFile:49) 
    at com.teamdev.jxbrowser.chromium.internal.ipc.IPC$a.<clinit>(SourceFile:39) 
    ... 46 more 
Caused by: java.lang.IllegalArgumentException: The /chromium-mac.xz resource cannot be found in JAR files 
    at com.teamdev.jxbrowser.chromium.internal.v.a(SourceFile:105) 
    at com.teamdev.jxbrowser.chromium.internal.v.a(SourceFile:33) 
    at com.teamdev.jxbrowser.chromium.internal.b.run(SourceFile:1054) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.teamdev.jxbrowser.chromium.internal.ChromiumExtractor.extract(SourceFile:47) 
    ... 49 more 
+1

アプリケーションを実行しているときにエラーを投稿できますか?私は今これを追加しました – pringi

+0

@pringiは、 'ページ – ACz

答えて

0

あなたが明示的に(関係なく、プロファイルの)この依存関係を追加する必要がありますポンポン

あなたはこれをやっている場合、私はわからないんだけど、何を尋ねたから。

スウィングパッケージを含むのはこのジャーです。 jaファイルのパッケージ名は、com.jxbrowser.chromium.internal.resのようになります。

+0

を更新しかし、なぜ私が追加したときにしてください。<依存性> ...' ' \t com.teamdev.jxbrowser \t jxbrowser-MAC \t $ {jxbrowser.version} '私が書いたように、それは動作しますが、プロファイルでは動作しません。どうして? – ACz

+0

私は分かりません。私はその瓶を開き、com.jxbrowser.chromium.internal.res。*のようなパッケージのみを含んでいます。あなたはそれを働かせるあなたのポンに何か他のものがなければなりません。 – pringi

+0

はい、あなたはきついですが、独自の 'jxbrowser-mac-6.12.pom'を生成します。内部に' jxbrowser'というメインartifactIdの依存関係があります(上記のように) – ACz

関連する問題