【问题标题】:Having a lot of trouble deploying a java applet部署 Java 小程序时遇到很多麻烦
【发布时间】:2009-03-08 17:39:37
【问题描述】:

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

但是,如果我将它粘贴到运行中并按回车键,它提供的网址可以正常打开:

所以为了避免让自己很头疼,我注释掉了 ImgHelper 类中的代码并这样做了:

public ImgHelper(String dir)
{
    //this.imgDir=dir;
    imgDir="C:\\java\\pacman\\assets\\";
}

效果很好。但我想把它放在一个网络服务器上,我不知道我应该如何/做什么来使所有图像和声音正常工作。有什么想法吗?

谢谢...

【问题讨论】:

  • 那么你的游戏成功了吗?

标签: java file applet relative-path


【解决方案1】:

为什么不把它全部放在一个 JAR 文件中,然后调用 Class.getResourceAsStream?

JAR 文件更好,因为它是单个 HTTP 连接,而不是每个文件一个 HTTP 连接。使用 Stream 也比使用 File 灵活得多。

当文件不在 JAR 中时,getResourceAsStream 也可以工作,它们需要与类文件相关。

编辑:

另一件事,如果小程序在服务器上,File 方法将不起作用,因为它将尝试从本地计算机(我想,我没有尝试过)而不是从服务器打开文件。即使它试图创建到服务器的文件路径也不起作用。

【讨论】:

    【解决方案2】:

    我同意 tofubeer 关于 JAR 的看法,但如果您想将图像放在服务器上,请参阅 Applet 图像教程here。代码库将是您的小程序在服务器上的任何位置,您也可以在服务器上放置相对于该位置的图像。使用媒体跟踪器和 Applet.getImage() 方法来检索 url。示例:

     my_gif = getImage(getDocumentBase(),"imageExample.gif");
    

    【讨论】:

      【解决方案3】:

      有两种可行的解决方案:

      • 图像可能存在于小程序 JAR 之外。然后可以使用图像所在目录的位置来初始化小程序。一旦你有了这些信息,你就可以从服务器加载图像。 The Sun Java tutorial provides an example usage of the applet parameter 传递图片源目录。
      • 小程序类加载器可用于从小程序的 JAR 加载图像,使用 getResourceAsStream() 方法。

      PS:如果您参考Java tutorials to load icons for your application 中的部分,将会很有帮助。同一部分讨论了TofuBeerJohn 提出的许多观点。

      编辑:不推荐使用 File API,因为它最终会读取本地文件系统。这对于互联网上的大多数用户来说是不可接受的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-03
        • 2020-11-02
        • 2014-08-28
        • 2011-06-11
        • 2011-08-20
        • 2012-09-11
        • 2012-10-26
        • 1970-01-01
        相关资源
        最近更新 更多