4

eclipse 内からアプリケーションを実行すると (weld se: org.jboss.weld.environment.se.StartMain の main メソッドを使用して) 正常に動作する、weld se を使用する小さな cli アプリケーションがあります。

問題は、動作する実行可能な jar を作成できないことです。現時点では、maven-assembly-plugin を使用しています。

<plugin>                                                                      
    <artifactId>maven-assembly-plugin</artifactId>                            
    <configuration>                                                           
        <archive>                                                             
            <manifest>                                                        
                <addClasspath>true</addClasspath>                             
                <mainClass>org.jboss.weld.environment.se.StartMain</mainClass>
            </manifest>                                                       
        </archive>                                                            
        <descriptorRefs>                                                      
            <descriptorRef>jar-with-dependencies</descriptorRef>              
        </descriptorRefs>                                                     
    </configuration>                                                          
    <executions>                                                              
        <execution>                                                           
            <id>make-my-jar-with-dependencies</id>                            
            <phase>package</phase>                                            
            <goals>                                                           
                <goal>single</goal>                                           
            </goals>                                                          
        </execution>                                                          
    </executions>                                                             
</plugin>

また、シェードプラグインを次のように試しました: <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>

しかし、すべての場合で、同じ多くのエラーが発生します。

Nov 03, 2015 5:50:21 PM org.jboss.weld.bootstrap.MissingDependenciesRegistry handleResourceLoadingException
INFO: WELD-000119: Not generating any bean definitions from org.jboss.weld.servlet.api.helpers.ForwardingServletListener because of underlying class loading error: Type javax.servlet.ServletContextListener not found.  If this is unexpected, enable DEBUG logging to see the full error.
... many of this kind with different classes
Exception in thread "main" org.jboss.weld.exceptions.DeploymentException: java.lang.InternalError: Enclosing method not found
...
Caused by: com.google.common.util.concurrent.ExecutionError: java.lang.InternalError: Enclosing method not found
...
Caused by: java.lang.InternalError: Enclosing method not found
...

その間、私も追加しようとしました

<scan>
    <exclude name="org.jboss.weld.**" />
</scan>

ここで提案されているように、私の beans.xml に。変化なし...

4

1 に答える 1

0

最善の解決策は、über-jar (jar 内のすべての依存関係) を作成せず、すべての依存関係を lib フォルダーに入れることです。私にとって、このソリューションはうまくいきました。また、beans.xml でスキャン/除外するパターンをいくつか追加した後も (ほぼ) 機能しましたが、これ (または uber jar 自体) が別の奇妙な問題を引き起こしました。

于 2015-11-04T12:08:16.787 に答える