我是 Java 新手。我只是想为我的小程序构建一个 .jar 文件,以便我可以从浏览器运行它。这是我的目录结构:
C:\java\pacman\src
包含所有.java 类文件。
C:\java\pacman\assets
包含大约 4-5 个图像和音频文件。
如果我尝试使用以下代码:
Image someFile=getCodeBase().toString() + "file.png";
getCodeBase()
的结果是
file:/C:/java/pacman/bin/
但是以下代码无法加载:
img=new ImgHelper(getCodeBase().toString() + "assets/");
ImageIO.read(new File(img.getPath("pacman.png")));
将我的“assets”文件夹移动到“bin”文件夹也没有解决这个问题。它尝试加载:
file:/C:/java/pacman/bin/assets/pacman.png
说:
Can't read input file!
但是如果我将其粘贴到运行中并按 Enter 键,它给出的网址可以正常打开:
因此,为了避免让自己很头痛,我注释掉了 ImgHelper 类中的代码并执行了以下操作:
public ImgHelper(String dir)
{
//this.imgDir=dir;
imgDir="C:\\java\\pacman\\assets\\";
}
效果非常好。但我想把它放在网络服务器上,而且我不知道应该如何/做什么才能使所有图像和声音正常工作。有什么想法吗?
谢谢...
最佳答案
为什么不将其全部放入 JAR 文件中,然后调用 Class.getResourceAsStream?
JAR 文件更好,因为它是单个 HTTP 连接,而不是每个文件一个 HTTP 连接。使用 Stream 也比使用 File 灵活得多。
当文件不在 JAR 中时,getResourceAsStream 也将起作用,它们需要相对于类文件。
编辑:
另一件事,如果小程序位于服务器上,则 File 方法将不起作用,因为它将尝试从本地计算机(我想,我还没有尝试过)而不是从服务器打开文件。即使它尝试创建一个无法工作的服务器文件路径。
关于java - 部署 java applet 时遇到很多麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/623977/