部署java小程序时遇到很多问题
我是Java新手。我只是想为我的applet构建一个.jar文件,这样我就可以从浏览器中运行它了。这就是我的目录结构的外观:部署java小程序时遇到很多问题,java,file,applet,relative-path,Java,File,Applet,Relative Path,我是Java新手。我只是想为我的applet构建一个.jar文件,这样我就可以从浏览器中运行它了。这就是我的目录结构的外观: C:\java\pacman\src 包含所有的.java类文件 C:\java\pacman\assets 包含大约4-5个图像和音频文件 如果我尝试使用以下代码: Image someFile=getCodeBase().toString() + "file.png"; getCodeBase()的结果是 file:/C:/java/pacman/bin/ 但
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!
但如果我将其粘贴到run并按enter键,它提供的url将很好地打开:
因此,为了避免让自己头疼,我在ImgHelper类中注释掉了代码,并这样做:
public ImgHelper(String dir)
{
//this.imgDir=dir;
imgDir="C:\\java\\pacman\\assets\\";
}
这很好用。但是我想把它放在一个网络服务器上,我不知道该怎么做才能让所有的图像和声音都正常工作。有什么想法吗
谢谢…为什么不把它全部放在一个JAR文件中,然后调用Class.getResourceAsStream JAR文件更好,因为它是单个HTTP连接,而不是每个文件一个HTTP连接。使用流也比使用文件灵活得多 getResourceAsStream将在文件不在JAR中时工作,它们需要与类文件相关 编辑:
另外,如果applet位于服务器上,File方法将不起作用,因为它将尝试从本地计算机(我想,我还没有尝试过)而不是从服务器打开文件。即使它试图创建一个无法运行的服务器文件路径。我同意ToBubeer关于JAR的观点,但是如果您想将图像放在服务器上,请参阅关于小程序图像的教程。代码库将是您的小程序在服务器上的任何位置,您也可以在服务器上放置与此相关的图像。使用媒体跟踪器和Applet.getImage()方法检索url。从示例中可以看出:
my_gif = getImage(getDocumentBase(),"imageExample.gif");
有两种可行的解决方案:
- 图像可能出现在applet JAR外部。然后可以使用图像所在目录的位置初始化小程序。一旦你有了这些信息,你就可以从服务器上加载图像了。以传递图像源目录
- 小程序类加载器可用于使用getResourceAsStream()方法从小程序的JAR加载图像
编辑:不建议使用文件API,因为它最终会读取本地文件系统。这对于互联网上的大多数用户来说是不可接受的。那么你让游戏正常运行了吗?