Java程序在Eclipse中运行良好,但不是作为.jar文件
我的.jar文件有问题。它在Eclipse中运行良好,但一旦我导出它,它就不会打开。我检查了清单文件,看起来没问题 我尝试将其导出为可运行的jar,以及使用jar生成器。什么都没用 我试着在命令提示符下运行它,它说它无法访问jar文件。。。我在这里搜索了一段时间,还没有找到答案 我不确定我做错了什么。我能想到的唯一一件事是我没有正确地获取图像 我正在为程序的精灵使用.png文件,下面是一个如何为我的程序获取它们的示例 此代码从.png文件开始构建级别Java程序在Eclipse中运行良好,但不是作为.jar文件,java,eclipse,executable-jar,Java,Eclipse,Executable Jar,我的.jar文件有问题。它在Eclipse中运行良好,但一旦我导出它,它就不会打开。我检查了清单文件,看起来没问题 我尝试将其导出为可运行的jar,以及使用jar生成器。什么都没用 我试着在命令提示符下运行它,它说它无法访问jar文件。。。我在这里搜索了一段时间,还没有找到答案 我不确定我做错了什么。我能想到的唯一一件事是我没有正确地获取图像 我正在为程序的精灵使用.png文件,下面是一个如何为我的程序获取它们的示例 此代码从.png文件开始构建级别 public class SpawnLeve
public class SpawnLevel extends Level{
public SpawnLevel(String path) {
super(path);
}
protected void loadLevel(String path){
try{
System.out.println("classpath is: " + System.getProperty("java.class.path"));
BufferedImage image = ImageIO.read(SpawnLevel.class.getResource(path));
int w = width = image.getWidth();
int h = height= image.getHeight();
tiles = new int[w*h];
image.getRGB(0,0,w,h,tiles,0,w);
}catch(IOException e){
e.printStackTrace();
System.out.println("EXEPTION FOUND!!! Could not load the level file!");
}
}
protected void generateLevel(){
System.out.println("Tiles: " + tiles[0]);
}
}
我以前为另一个程序制作了另一个.jar,没有问题。任何帮助都将不胜感激
如果有帮助,我使用此代码显示资源文件夹路径信息
System.out.println("classpath is: " + System.getProperty("java.class.path"));
以下是我的资源文件夹的当前路径。在我从eclipse导出它之前
classpath is: C:\Users\name\workspace\Rpg_Game\bin;C:\Users\name\workspace\Rpg_Game\res
在我导出到.jar之后
classpath is: 2ndGameTest.jar
如果您的图像位于
src
中的resources
包中,那么您应该为getResource()
使用的路径如下
class.getResource("/resources/levels/level1.png")
使用测试程序更新
import java.awt.Image;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
public class TestImage {
public static void main(String[] args) throws IOException {
Image image = ImageIO.read(TestImage.class.getResource("/resources/images/image.png"));
ImageIcon icon = new ImageIcon(image);
JLabel label = new JLabel(icon);
JOptionPane.showMessageDialog(null, label);
}
}
请尝试使用SpawnLevel.class.getResourceAs(路径)以及路径是什么,或者是否可以附加错误日志?如何运行jar文件?你的主要类在哪里?@andy我把代码改成了SpawnLevel.class.getResourceAsStream(路径),现在当我通过命令提示符运行它时,它给我的异常是imageIo.read(未知源)。这通常是因为路径字符串错误或图像未包含在jar中。@greg-449我的图像位于项目文件夹中,并在导出项目时显示。我正在查看我的项目的“配置构建路径”。如果构建路径正确,我应该看什么?我当前看到了src、系统库和我的资源文件夹。我的资源文件夹在我的src之外。我试着将资源放在src文件夹中并调整代码,但结果是一样的;它在eclipse中运行良好,但不是作为一个jar。打开一个新项目,在src中创建资源/图像,并将图像放入图像中。将其用作测试程序。把它包装在罐子里,看看你是否看到了图像。让我知道。如果它能工作,那么你就知道你的程序出了问题。当我以jar的形式运行测试程序时,它工作了,所以我的代码在某个地方出了问题。有关于下一步的提示吗?调用
loadLevel
时会出现异常?另外,如果问题出在路径
上,那么您到底在向方法传递什么。谢谢您的帮助。在查看我的路径并使用ImageTest程序之后,我发现我的路径都必须是正确的大小写才能正确加载到我的jar文件中。