我最近开始使用Android Studio IDE使用使用Gradle的LibGDX框架开发项目。一切都运行得很好,直到我将一段代码分成一个新类。由于我已经这样做了,我不断收到以下错误:
麻烦处理" java / awt / font / NumericShaper.class": 不明智或错误地使用核心类(java。*或javax。*) 什么时候不建立核心库。 这通常是由于无意中包含核心库文件 在您的应用程序的项目中,使用IDE(例如 日食)。如果你确定你没有故意定义一个 核心课程,那么这就是最有可能解释的问题 继续 但是,您实际上可能正在尝试在核心中定义类 命名空间,例如,您可能采用的来源 来自非Android虚拟机项目。这将是最多的 肯定不行。它至少会危害它 您的应用与该平台的未来版本的兼容性。 它的合法性通常也是有问题的。 如果你真的打算建立一个核心库 - 这只是 适合作为创建完整虚拟机的一部分 分发,而不是编译应用程序 - 然后使用 " - 核心库"选项以禁止此错误消息。 如果你继续使用" - core-library"但事实上 构建应用程序,然后预先警告您的应用程序 在某些时候仍然无法建立或运行。请 为愤怒的顾客做好准备,例如找到你的 应用程序在升级其运行后停止运行 系统。你应该为这个问题负责。 如果您合法地使用恰好位于的某些代码 核心包,那么你最简单的安全选择就是 重新包装那段代码。也就是说,将有问题的类移到 你自己的包命名空间。这意味着他们永远不会进入 与核心系统类冲突。 JarJar是一个可能有用的工具 你在这努力。如果你发现你不能这样做,那么 这表明你所处的道路最终将成为现实 导致痛苦,痛苦,悲伤和悲伤。
我尝试在这里搜索,但所有可能的解决方案要么对我不起作用,要么使用Eclipse IDE。我现在已经停留了几个小时,无法理解我的代码为什么不能编译。我没有添加任何可能导致此错误的额外导入。这是我参与的最后一堂课:
package com.infiniterain.infinitecrawler.states.floor;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.infiniterain.infinitecrawler.DisposablesHandler;
import com.infiniterain.infinitecrawler.states.Floor;
/*
Handles updating and rendering of the floor map.
*/
public class TileMap {
// Floor fields
private DisposablesHandler disposablesHandler;
private Floor floor;
// Textures
private Texture tilesetTexture;
private TextureRegion[] tileTexture;
// Map properties
private int[] floorSize;
private int[] mapSize;
// Tile properties
private int[][] tileID;
private int[][] tileRotation;
// Constructor
public TileMap(Floor floor) {
// Floor fields
this.floor = floor;
disposablesHandler = floor.getDisposablesHandler();
// Textures
disposablesHandler.getTextures().put(
"tilesetTexture",
new Texture(floor.getFloorConfig().get("tilesetPath").asString()));
tilesetTexture = (Texture) disposablesHandler.getTextures().get("tilesetTexture");
tileTexture = new TextureRegion[tilesetTexture.getWidth() / 32 * tilesetTexture.getHeight() / 32];
// Map properties
floorSize = new int[]{
floor.getFloorConfig().get("size").asIntArray()[0],
floor.getFloorConfig().get("size").asIntArray()[1]};
mapSize = new int[]{
floorSize[0] * 10 + floorSize[0] - 1,
floorSize[1] * 10 + floorSize[1] - 1};
// Tile properties
tileID = new int[mapSize[0]][mapSize[1]];
tileRotation = new int[mapSize[0]][mapSize[1]];
// Generating tile textures
for (int x = 0, y = 0, count = 0; y < tilesetTexture.getHeight() / 32; y++, count++)
for (x = 0; x < tilesetTexture.getWidth() / 32; x++, count++) {
tileTexture[count] = new TextureRegion(tilesetTexture, x * 32, y * 32, 32, 32);
}
// Generating tilemap
generateTilemap();
}
// Generates tilemap
public void generateTilemap() {
for (int x = 0; x < floorSize[0]; x++)
for (int y = 0; y < floorSize[1]; y++) {
tileID[x][y] = 0;
}
for (int dx = 0; dx < floorSize[0]; dx++)
for (int dy = 0; dy < floorSize[1]; dy++) {
// Building room
for (int x = 0; x < 10; x++)
for (int y = 0; y < 10; y++) {
int cx = x + (dx * 10);
int cy = y + (dy * 10);
if (x == 0 && y == 0) {
tileID[cx][cy] = 0;
tileRotation[cx][cy] = 180;
} else if (x == 0 && y == 9) {
tileID[cx][cy] = 0;
tileRotation[cx][cy] = 90;
} else if (x == 9 && y == 0) {
tileID[cx][cy] = 0;
tileRotation[cx][cy] = 270;
} else if (x == 9 && y == 9) {
tileID[cx][cy] = 0;
tileRotation[cx][cy] = 0;
} else if ((y == 9) && (x != 0 && x != 9)) {
tileID[cx][cy] = 1;
tileRotation[cx][cy] = 0;
} else if ((x == 0) && (y != 0 && y != 9)) {
tileID[cx][cy] = 1;
tileRotation[cx][cy] = 90;
} else if ((x == 9) && (y != 0 && y != 9)) {
tileID[cx][cy] = 1;
tileRotation[cx][cy] = 270;
} else if ((y == 0) && (x != 0 && x != 9)) {
tileID[cx][cy] = 1;
tileRotation[cx][cy] = 180;
} else {
tileID[cx][cy] = 3;
tileRotation[cx][cy] = 0;
}
}
}
}
// Renders the map
public void render() {
disposablesHandler.getSpriteBatch().begin();
disposablesHandler.getSpriteBatch().setColor(1, 1, 1, 1);
for (int x = 0; x < mapSize[0]; x++)
for (int y = 0; y < mapSize[1]; y++) {
disposablesHandler.getSpriteBatch().draw(tileTexture[tileID[x][y]], x * 32, y * 32);
}
disposablesHandler.getSpriteBatch().end();
}
}
使用上述类的代码:
package com.infiniterain.infinitecrawler.states;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.JsonReader;
import com.badlogic.gdx.utils.JsonValue;
import com.infiniterain.infinitecrawler.DisposablesHandler;
import com.infiniterain.infinitecrawler.states.floor.Room;
import com.infiniterain.infinitecrawler.states.floor.TileMap;
import java.util.ArrayList;
import java.util.Random;
public class Floor extends State {
// Floor properties
private JsonValue floorConfig;
private int floorID;
private int[] floorSize;
// Necessary objects
private TileMap tileMap;
private Room room[][];
private DisposablesHandler disposablesHandler;
private Random random;
public Floor(GameStateManager gameStateManager, int floorID) {
// Loading floors.json config
floorConfig = new JsonReader().parse(
Gdx.files.internal("configs/floors.json")).get(String.valueOf(floorID));
// Setting floor properties
this.floorID = floorID;
floorSize = new int[]{
floorConfig.get("size").asIntArray()[0],
floorConfig.get("size").asIntArray()[1]};
// Instantiating necessary objects
disposablesHandler = new DisposablesHandler(true, false, false, true);
random = new Random();
// Generating the floor
generateFloor(floorID);
tileMap = new TileMap(this);
}
public void generateFloor(int floor) {
int[] startingPoint = new int[]{
random.nextInt(floorSize[0]),
random.nextInt(floorSize[1])
};
room = new Room[floorSize[0]][floorSize[1]];
for (int x = 0; x < floorSize[0]; x++)
for (int y = 0; y < floorSize[1]; y++) {
room[x][y] = new Room(new int[]{x, y});
}
room[startingPoint[0]][startingPoint[1]].setAccessible(true);
room[startingPoint[0]][startingPoint[1]].setActivated(true);
for (int x = -1; x < 2; x++)
for (int y = -1; y < 2; y++) {
if (x == 0 || y == 0)
if (startingPoint[0] + x < floorSize[0] && startingPoint[1] + y < floorSize[2]
&& startingPoint[0] + x >= 0 && startingPoint[1] + y >= 0) {
room[startingPoint[0]][startingPoint[1]].setActivated(true);
room[startingPoint[0] + x][startingPoint[1] + y].setParentPosition(new int[]{startingPoint[0], startingPoint[1]});
}
}
while (true) {
ArrayList<Room> activatedRooms = new ArrayList<Room>();
for (int x = 0; x < floorSize[0]; x++)
for (int y = 0; y < floorSize[1]; y++) {
if (room[x][y].isActivated() && !room[x][y].isAccessible()) {
activatedRooms.add(room[x][y]);
}
}
if (!activatedRooms.isEmpty()) {
Room randomRoom = activatedRooms.get(random.nextInt(activatedRooms.size()));
Room parentRoom = room[randomRoom.getParentPosition()[0]][randomRoom.getParentPosition()[1]];
if (parentRoom.getPosition()[0] < randomRoom.getPosition()[0]) {
randomRoom.getDoor().remove("left");
randomRoom.getDoor().put("left", true);
parentRoom.getDoor().remove("right");
parentRoom.getDoor().put("right", true);
} else if (parentRoom.getPosition()[0] > randomRoom.getPosition()[0]) {
randomRoom.getDoor().remove("right");
randomRoom.getDoor().put("right", true);
parentRoom.getDoor().remove("left");
parentRoom.getDoor().put("left", true);
} else if (parentRoom.getPosition()[1] < randomRoom.getPosition()[1]) {
randomRoom.getDoor().remove("down");
randomRoom.getDoor().put("down", true);
parentRoom.getDoor().remove("up");
parentRoom.getDoor().put("up", true);
} else if (parentRoom.getPosition()[1] > randomRoom.getPosition()[1]) {
randomRoom.getDoor().remove("up");
randomRoom.getDoor().put("up", true);
parentRoom.getDoor().remove("down");
parentRoom.getDoor().put("down", true);
}
randomRoom.setAccessible(true);
int roomX = randomRoom.getPosition()[0];
int roomY = randomRoom.getPosition()[1];
for (int x = -1; x < 2; x++) {
for (int y = -1; y < 2; y++) {
if (x == 0 || y == 0)
if (roomX + x < floorSize[0] && roomY + y < floorSize[1]
&& roomX + x >= 0 && roomY + y >= 0) {
room[roomX + x][roomY + y].setActivated(true);
room[roomX + x][roomY + y].setParentPosition(new int[]{roomX, roomY});
}
}
}
} else {
break;
}
}
}
@Override
public void handleInput() {
if (Gdx.input.justTouched()) {
//generateFloor(1);
// System.out.println("touched");
}
}
@Override
public void update(float deltaTime) {
}
@Override
public void render(DisposablesHandler disposables) {
tileMap.render();
}
@Override
public void dispose() {
disposablesHandler.dispose();
}
// Getters
public DisposablesHandler getDisposablesHandler() {
return disposablesHandler;
}
public JsonValue getFloorConfig() {
return floorConfig;
}
public int getFloor() {
return floorID;
}
public int[] getFloorSize() {
return floorSize;
}
}
我已经研究了我能做的一切,但我仍然无法弄清楚问题是什么,你们中的任何一个人都会很友好并帮助我解决这个小问题吗?