只有导出的可执行文件Jar文件存在问题。整个项目在eclipse中工作正常,但是当从命令提示符导出并运行时出现以下错误 可执行文件Jar文件将不会运行:命令提示符中的错误
我认为它无法找到其中一个图像,但不明白为什么它会抛出jar文件中的错误,而不是在eclipse中运行时的项目。该项目有一个runner类,它打开包含smallframe类的主页面。这些都在GUI软件包中,所用的所有图像都在src/Resources文件夹中。
任何建议看哪里最受欢迎。
编辑:只是更改所有图像的代码,但得到一些错误的一些“无法从类型对象的非静态方法getClass()静态引用”所以使用类名称“GenerateImages.class “而不是getClass()。这在Eclipse中工作,但似乎没有在可执行Jar文件中工作。
已经把代码createQuestionOne下面,只是想知道我做了一些错误:因为在简单的词所处的环境,它被执行
public static void createQuestionOne(int startShape, int endShape, String symbols, int scenarioNum, String fileSaveLocation) throws IOException
{
//shapes
final BufferedImage shapeLeft = ImageIO.read(GenerateImages.class.getClassLoader().getResource(startShape + ".png"));
final BufferedImage shapeRight = ImageIO.read(GenerateImages.class.getClassLoader().getResource(endShape + ".png"));
final BufferedImage questionMark = ImageIO.read(GenerateImages.class.getClassLoader().getResource("questionMark.png"));
//arrows
final BufferedImage rightArrow = ImageIO.read(GenerateImages.class.getClassLoader().getResource("rightArrow.png"));
//Transformations
final BufferedImage transform1 = ImageIO.read(GenerateImages.class.getClassLoader().getResource(symbols.substring(0,1)+ ".png"));
//
final BufferedImage none = ImageIO.read(GenerateImages.class.getClassLoader().getResource("None.png"));
final int width = 60;
final int height = 90;
final int smallWidth = 34;
final BufferedImage questionLayout = new BufferedImage(5*width,height,BufferedImage.TYPE_INT_RGB);
Graphics2D reDraw = questionLayout.createGraphics();
//set background to white
reDraw.setColor(Color.WHITE);
reDraw.fillRect(0, 0, questionLayout.getWidth(), questionLayout.getHeight());
//Question Line
reDraw.drawImage(shapeLeft,0,15, null);
reDraw.drawImage(rightArrow,width,15, null);
reDraw.drawImage(transform1,width*2,30, null);
reDraw.drawImage(rightArrow,width*2+smallWidth,15, null);
reDraw.drawImage(questionMark,width*3+smallWidth,15, null);
try{
ImageIO.write(questionLayout, "png", new File(fileSaveLocation + "\\S" + (scenarioNum + 1) +"Q1.png"));
;}catch (Exception e) {}
//output correct answer as image
drawSingleShapeImage(shapeRight,scenarioNum, 1, fileSaveLocation);
drawDistractionShapeImage(none,scenarioNum, 1, 4, fileSaveLocation);
}
尝试读取图像这样'className.class.getClassLoader() .getResource(“yourImage”)'并重新创建罐子 – SparkOn 2014-08-30 13:50:29
谢谢你的工作 - 在代码中做一些替换。是错误的,因为我已经硬编码了当jar被导出时改变的位置。只是想明白,所以不要犯同样的错误两次 – user1836661 2014-08-30 14:15:43