0

我对学习 JBox2D 很感兴趣,但我似乎在第一个障碍中绊倒了 - 构建库。

快速入门说明指定了以下简单步骤:

  1. 通过 Subversion 查看项目:
  2. 作为 Maven 项目导入 IDE(使用根文件夹中的 pom.xml 描述符)
  3. 运行 org.jbox2d.testbed.framework.TestbedMain 类

我已经检查了代码并将项目导入 IntelliJ IDEA (12.1.4),但是,当我尝试运行 TestbedMain 类(并随后编译代码)时,我收到以下错误:

java: duplicate class: org.jbox2d.common.PlatformMathUtils
java: duplicate class: org.jbox2d.common.Timer

重复类错误

我做错了什么/我错过了什么?

谢谢

4

1 回答 1

1

查看jbox2d-library 模块的 POM,我看到有一个构建部分明确忽略了 gwtemul 包下的类:

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <excludes>
            <exclude>**/gwtemul/**</exclude>
          </excludes>
        </configuration>
      </plugin>
    </plugins>
</build>

在我看来,我可能应该通过 MVN 构建这个库并将构建的 JAR 作为 jbox2d-testbed 模块的依赖项附加。

但是,我发现修改这些类的包声明也可以解决问题:

package org.jbox2d.gwtemul.org.jbox2d.common;

/**
 * A GWT-compatible implementation of the platform math utilities.
 */
class PlatformMathUtils {

  public static final float fastPow(float a, float b) {
    return (float) Math.pow(a, b);
  }
}

而且由于无论如何它们都会被构建忽略,我认为它不会造成任何伤害。

完成此操作后,我就可以运行 org.jbox2d.testbed.framework.TestbedMain 类并获得预期的 GUI:

测试床主要运行

于 2013-07-12T18:35:15.607 回答