Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java程序在Eclipse中运行良好,但不是作为.jar文件_Java_Eclipse_Executable Jar - Fatal编程技术网

Java程序在Eclipse中运行良好,但不是作为.jar文件

Java程序在Eclipse中运行良好,但不是作为.jar文件,java,eclipse,executable-jar,Java,Eclipse,Executable Jar,我的.jar文件有问题。它在Eclipse中运行良好,但一旦我导出它,它就不会打开。我检查了清单文件,看起来没问题 我尝试将其导出为可运行的jar,以及使用jar生成器。什么都没用 我试着在命令提示符下运行它,它说它无法访问jar文件。。。我在这里搜索了一段时间,还没有找到答案 我不确定我做错了什么。我能想到的唯一一件事是我没有正确地获取图像 我正在为程序的精灵使用.png文件,下面是一个如何为我的程序获取它们的示例 此代码从.png文件开始构建级别 public class SpawnLeve

我的.jar文件有问题。它在Eclipse中运行良好,但一旦我导出它,它就不会打开。我检查了清单文件,看起来没问题

我尝试将其导出为可运行的jar,以及使用jar生成器。什么都没用

我试着在命令提示符下运行它,它说它无法访问jar文件。。。我在这里搜索了一段时间,还没有找到答案

我不确定我做错了什么。我能想到的唯一一件事是我没有正确地获取图像

我正在为程序的精灵使用.png文件,下面是一个如何为我的程序获取它们的示例

此代码从.png文件开始构建级别

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文件中。