当前位置: 首页 > 知识库问答 >
问题:

在现有maven项目中集成JMH代码

鲍建业
2023-03-14

JMH建议您使用他们的原型创建项目。通过将我的代码作为依赖项包含在这个生成的项目中,我能够以这种方式运行我的基准测试代码。

但是,我现在尝试使用配置文件将基准测试直接集成到我的项目源代码中

<profiles>
    <profile>
        <id>benchmark</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-shade-plugin</artifactId>
                    <version>2.2</version>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
                                <finalName>${uberjar.name}</finalName>
                                <transformers>
                                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                        <mainClass>org.openjdk.jmh.Main</mainClass>
                                    </transformer>
                                </transformers>
                                <filters>
                                    <filter>
                                        <!--
                                            Shading signed JARs will fail without this.
                                            http://stackoverflow.com/questions/999489/invalid-signature-file-when-attempting-to-run-a-jar
                                        -->
                                        <artifact>*:*</artifact>
                                        <excludes>
                                            <exclude>META-INF/*.SF</exclude>
                                            <exclude>META-INF/*.DSA</exclude>
                                            <exclude>META-INF/*.RSA</exclude>
                                        </excludes>
                                    </filter>
                                </filters>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
                <groupId>org.openjdk.jmh</groupId>
                <artifactId>jmh-core</artifactId>
                <version>${jmh.version}</version>
            </dependency>
            <dependency>
                <groupId>org.openjdk.jmh</groupId>
                <artifactId>jmh-generator-annprocess</artifactId>
                <version>${jmh.version}</version>
            </dependency>
        </dependencies>
    </profile>
</profiles>

当我这样做并运行生成的基准测试jar时,我得到一个不兼容的类更改错误

Exception in thread "main" java.lang.IncompatibleClassChangeError: Implementing class
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at org.openjdk.jmh.Main.main(Main.java:44)

任何指点将不胜感激

共有1个答案

傅泉
2023-03-14

你真的需要一个单独的pom的JMH。我会使用maven调用器插件来调用它。

 类似资料:
  • 问题内容: 是否有任何IDE(或与此相关的任何其他工具)都能够基于现有项目生成POM? 我最终按照Peter和Sal的建议,使用Maven原型生成了POM,然后将现有资源移入了。感谢您的帮助。 问题答案: 您可以在IntelliJ中执行此操作,但是它生成的POM可能比手工编写要复杂得多。如果您的项目当前在JBuilder或Eclipse中,则可以首先导入它。 相反,我建议您在POM中描述您的项目,

  • 我正在构建我的第一个Android应用程序,我在github上发现了一个java项目,我想和我的应用程序集成在一起。我是否可以手动将java文件添加到我的android项目目录 app->java->com.example.appname java客户机的src->main目录有一个嵌套的文件结构,所以我不确定这是否会引起问题。 我已经尝试了本文中的解决方案,但我没有看到步骤2中提供的选项如何将现

  • 我正在尝试对现有的android项目进行本地集成,但在android studio中构建项目时出现了以下异常。 原因:java.lang.Exception:React Native CLI无法确定Android项目配置。这可能是由于配置错误。配置输出:[root:/Users/muratoner/Desktop/backup/Sabanci.Projects/Mobile/hrweb-ract-

  • 我有一个Spring Boot项目,它最初使用hibernate.ddl-auto: update命令来创建模式。现在我想迁移到liquibase,因此以下步骤是: 在cmd上运行diffChangeLog以生成现有模式- 到现在为止,一直都还不错。现在我想把这个更改转移到生产环境中,当我的spring boot项目启动时,它应该在启动之前自动运行changelogSync命令,然后引导项目,这样

  • 我首先通过执行生成了一个gwt maven项目- mvn原型:生成-Darch etypeGroupId=org.codehaus.mojo-Darch etypeartifactId=gwt-maven-plugin-Darch etypeVersion=2.7.0 在那之后,pom。xml如下所示: 然后我通过内置的eclipse函数将这个项目导入eclipse——导入现有的Maven项目。

  • 问题内容: 自从Go 1.5发布以来,我开始着眼于如何将其集成到我现有的项目中。 该项目的代码库完全用C编写,可以低级访问硬件和其他有趣的东西。但是,某些较高层次的东西很繁琐,我想开始用较高层次的语言(Go)编写它们 我可以通过C程序调用Go代码吗?我安装了Go 1.5,它添加了(https://golang.org/s/execmodes),我正试图开始工作。 但是,我似乎无法让Go生成适当的头