org.glassfish.hk2.external.org.objectweb.asm.ClassReader上的java.lang.IllegalArgumentException:NPE

I am getting below exception when running arquillian test case with + jdk 11 + payara embedded 2.0 :

Jan. 29,2020 9:38:12 A.M. org.glassfish.hk2.classmodel.reflect.Parser$5 on
SEVERE: 

    Exception while visiting WEB-INF/classes/api/JwtTest.class of size 3890
    java.lang.IllegalArgumentException
        at org.glassfish.hk2.external.org.objectweb.asm.ClassReader.<init>(ClassReader.java:160)
        at org.glassfish.hk2.external.org.objectweb.asm.ClassReader.<init>(ClassReader.java:143)
        at org.glassfish.hk2.external.org.objectweb.asm.ClassReader.<init>(ClassReader.java:418)
        at org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:335)
        at com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:141)
        at com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:103)
        at org.glassfish.hk2.classmodel.reflect.Parser.doJob(Parser.java:321)
        at org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44)
        at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:280)
        at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:269)
        at java.base/java.util.concurrent.Futuretask.run(Futuretask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)

    Jan. 29,2020 9:38:12 A.M. org.glassfish.hk2.classmodel.reflect.Parser$5 on
    SEVERE: 



    Exception while visiting WEB-INF/classes/api/RBACAuthorizationTest.class of size 3966
    java.lang.IllegalArgumentException
        at org.glassfish.hk2.external.org.objectweb.asm.ClassReader.<init>(ClassReader.java:160)
        at org.glassfish.hk2.external.org.objectweb.asm.ClassReader.<init>(ClassReader.java:143)
        at org.glassfish.hk2.external.org.objectweb.asm.ClassReader.<init>(ClassReader.java:418)
        at org.glassfish.hk2.classmodel.reflect.Parser$5.on(Parser.java:335)
        at com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.handleEntry(ReadableArchiveScannerAdapter.java:141)
        at com.sun.enterprise.v3.server.ReadableArchiveScannerAdapter.onSelectedEntries(ReadableArchiveScannerAdapter.java:103)
        at org.glassfish.hk2.classmodel.reflect.Parser.doJob(Parser.java:321)
        at org.glassfish.hk2.classmodel.reflect.Parser.access$300(Parser.java:44)
        at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:280)
        at org.glassfish.hk2.classmodel.reflect.Parser$3.call(Parser.java:269)
        at java.base/java.util.concurrent.Futuretask.run(Futuretask.java:264)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)

我的pom.xml包括:glassfish-embedded-all

      <dependency>
    <groupId>org.jboss.arquillian.junit</groupId>
    <artifactId>arquillian-junit-container</artifactId>
    <version>1.4.0.Final</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>fish.payara.arquillian</groupId>
    <artifactId>arquillian-payara-server-embedded</artifactId>
    <version>2.0</version>
    <scope>test</scope>
</dependency>

当我发动战争并在5.194 payara部署它时,它的工作正常。但是,当我在arquillian中运行测试用例时,我遇到了如上所述的错误。 我是否需要在pom.xml中添加任何其他依赖项?

-----------------------------------------------------------------------------

After trying for a while,below fix worked for me. If you are testing arquillin test cases in JDK 11 and payara 1.594 then your pom.xml should look like below : 

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.glassfish.external</groupId>
                <artifactId>management-api</artifactId>
                <version>3.2.2</version>
            </dependency>

            <dependency>
                <groupId>org.jboss.arquillian</groupId>
                <artifactId>arquillian-bom</artifactId>
                <version>1.4.1.Final</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>

    </dependencyManagement>
<dependencies>

        <dependency>
            <groupId>org.glassfish.jersey.core</groupId>
            <artifactId>jersey-client</artifactId>
            <version>2.30</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-ri</artifactId>
            <version>2.3.0</version>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>8.0</version>
            <type>jar</type>
            <scope>provided</scope>
        </dependency>

    <dependency>
            <groupId>org.jboss.arquillian.junit</groupId>
            <artifactId>arquillian-junit-container</artifactId>
            <version>1.4.0.Final</version>
            <scope>test</scope>
        </dependency>
    <dependency>
            <groupId>fish.payara.arquillian</groupId>
            <artifactId>arquillian-payara-server-4-embedded</artifactId>
            <version>1.0.Beta3</version>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>fish.payara.extras</groupId>
            <artifactId>payara-embedded-all</artifactId>
            <version>5.194</version>
            <scope>test</scope>
        </dependency>
<dependencies>
<plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
    <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <!--<forkCount>1</forkCount>-->
                    <reuseForks>false</reuseForks>
                    <argLine>-Xmx4096m</argLine>
                    <systemProperties>
                        <arquillian.launch>glassfish-embedded</arquillian.launch>
                    </systemProperties>
                </configuration>
            </plugin>
</plugins>

我们可以在Intellij中使用payara 1.594服务器运行测试用例。 您还可以在VM选项中添加以下内容:--add-exports java.base / jdk.internal.loader = ALL-UNNAMED。

希望这会有所帮助。

hirxn45624 回答:org.glassfish.hk2.external.org.objectweb.asm.ClassReader上的java.lang.IllegalArgumentException:NPE

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2689424.html

大家都在问