有很多的麻烦部署一个java程序
-
05-07-2019 - |
题
我是新来的Java。我只是试图建立一个.罐子文件的我的小程序所以我可以从我的浏览器。这就是我的目录的结构看起来像:
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")));
动我的'财产'的文件夹的'bin文件夹没有修复这一点。它试图装载:
file:/C:/java/pacman/bin/assets/pacman.png
他说:
Can't read input file!
但是url它给打开了好的,如果我粘贴到运行和打输入:
因此,为了避免自己很多头痛我的注释说明的代码在我的ImgHelper类并没有这样的:
public ImgHelper(String dir)
{
//this.imgDir=dir;
imgDir="C:\\java\\pacman\\assets\\";
}
这完美的作品。但是我想把这个放在一个网络服务器,并且我不知道什么我应该做到使所有的图像和声音的工作。任何想法?
谢谢...
解决方案
为什么不将它全部放在JAR文件中然后调用Class.getResourceAsStream?
JAR文件更好,因为它是单个HTTP连接,而不是每个文件一个HTTP连接。使用Stream比使用文件更灵活。
当文件不在JAR中时,getResourceAsStream将起作用,它们需要相对于类文件。
编辑:
另一件事,如果applet在服务器上,File方法将无法工作,因为它将尝试从本地计算机打开文件(我想,我还没有尝试过),而不是从服务器打开。即使它试图创建一个无法工作的服务器的文件路径。
其他提示
我同意关于JAR的tofubeer,但如果您想将图像放在服务器上,请参阅Applet图像教程这里。代码库将是您的applet在服务器上的任何位置,您也可以将相关的图像放在服务器上。使用媒体跟踪器和Applet.getImage()方法来检索URL。从示例:
my_gif = getImage(getDocumentBase(),"imageExample.gif");
有两种可能的解决方案,将工作:
- 图像可能是本外程序的罐子。小程序然后可以初始位置的目录像。一旦你有了这些信息,你可以随后加载的图像服务器。 太阳Java的教程提供了一个实例的使用程序参数 通过图像来源目录。
- 小程序类装载可能被利用来装载图像小程序的罐子,使用getResourceAsStream()方法。
PS:这将是有益的,如果你提到的部分 Java教程载的图标为你的申请.同一节讨论一个很大的点带来的 TofuBeer 和 约翰.
编辑:使用的文件API不是建议,因为它结束了读的当地文件系统。这是不能接受的对于大多数用户在互联网上。