java.lang.NoClassDefFoundError: java.awt.Point
java.lang.NoClassDefFoundError: java.awt.Point
我正在使用 Android Studio 为 android 设备开发基于 LibGDX 的游戏。我从 java.awt.Point 导入了 "Point"。我已经使用 DesktopLauncher 对其进行了测试。它工作正常。
问题:当我将它加载到 Android 设备时,当我到达下面的行时出现错误 "java.lang.NoClassDefFoundError: java.awt.Point"。请教如何解决这个问题。
Point p=new Point(toyCells[i][0] + toyCellsAdjecentCells[j][0],
toyCells[i][1] + toyCellsAdjecentCells[j][1]);
这是因为Android不支持awt
(或Swing
)。这些是开发计算机应用程序时要使用的图形库。尝试使用
android.graphics.Point
相反。
你不应该使用 com.badlogic.gdx.math.GridPoint2D
而不是 java.awt.Point
吗?
milez 的答案是正确的。 Android 没有您用于 DesktopLauncher 的点 class。
但是,您应该注意一件事:LibGDX 应该以与设备无关的方式工作。这意味着代码不需要在设备之间进行更改。因此,您需要找到一种与设备无关的解决方案。
你有两个选择:
您可以创建自己的 MyPoint class,其中包含 X 和 Y 整数字段。这非常简单,而且几乎没有开销。
您也可以使用类似点的 class LibGDX 提供称为 Vector2。 class 保证适用于所有设备:
Vector2 point = new Vector2(x, y);
对于此选项,调用 point.x 将为您提供传入的任何 X 的浮点表示。但是,如果您想在数组中使用此浮点值,则必须将其转换为整数.
my_x = my_array[(int) point.x];
它还为您提供了一些有用的数学选项,例如 translate(dx, dy) 或 angle()。如果您有兴趣做更多的选择而不仅仅是存储两个整数值,请使用这个。
我正在使用 Android Studio 为 android 设备开发基于 LibGDX 的游戏。我从 java.awt.Point 导入了 "Point"。我已经使用 DesktopLauncher 对其进行了测试。它工作正常。
问题:当我将它加载到 Android 设备时,当我到达下面的行时出现错误 "java.lang.NoClassDefFoundError: java.awt.Point"。请教如何解决这个问题。
Point p=new Point(toyCells[i][0] + toyCellsAdjecentCells[j][0],
toyCells[i][1] + toyCellsAdjecentCells[j][1]);
这是因为Android不支持awt
(或Swing
)。这些是开发计算机应用程序时要使用的图形库。尝试使用
android.graphics.Point
相反。
你不应该使用 com.badlogic.gdx.math.GridPoint2D
而不是 java.awt.Point
吗?
milez 的答案是正确的。 Android 没有您用于 DesktopLauncher 的点 class。
但是,您应该注意一件事:LibGDX 应该以与设备无关的方式工作。这意味着代码不需要在设备之间进行更改。因此,您需要找到一种与设备无关的解决方案。
你有两个选择:
您可以创建自己的 MyPoint class,其中包含 X 和 Y 整数字段。这非常简单,而且几乎没有开销。
您也可以使用类似点的 class LibGDX 提供称为 Vector2。 class 保证适用于所有设备:
Vector2 point = new Vector2(x, y);
对于此选项,调用 point.x 将为您提供传入的任何 X 的浮点表示。但是,如果您想在数组中使用此浮点值,则必须将其转换为整数.
my_x = my_array[(int) point.x];
它还为您提供了一些有用的数学选项,例如 translate(dx, dy) 或 angle()。如果您有兴趣做更多的选择而不仅仅是存储两个整数值,请使用这个。