java - 部署 java applet 时遇到很多麻烦

标签 java file applet relative-path

我是 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/

相关文章:

java - GCC 中的外部 "Java" block

python - 关闭未保存到变量的文件不是 Python 中的坏习惯吗?

java - 使用 Java 更新文件中所有出现的字符串

java - 在 applet 中使用 main 方法是否合适?

java - Java Applet 中的 AccessControlException

带有定位的 ArrayList 中的 Java ForEach

Java实体java.sql.SQLException : Field 'id' doesn't have a default value

java - 旋转 tiff 图像时出现问题

java - 停止在 BoxLayout 中扩展 JScrollPane

c - C 中逐字符、逐行读取文件