0

JBox2D の学習に興味がありますが、最初のハードルであるライブラリの構築でつまずいたようです。

クイック スタートの手順では、次の簡単な手順を指定します。

  1. Subversion からプロジェクトをチェックアウトします。
  2. IDE に Maven プロジェクトとしてインポートします (ルート フォルダーの 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 が得られました。

TestbedMain 実行中

于 2013-07-12T18:35:15.607 に答える