Java 每次运行Eclipse都会生成real.jar文件

Java 每次运行Eclipse都会生成real.jar文件,java,eclipse,jar,compilation,extract,Java,Eclipse,Jar,Compilation,Extract,我有一个程序可以将文件从自身(在.jar内部)复制到外部,但每当我尝试从Eclipse运行它时,它都会给我一个异常: java.io.FileNotFoundException: <my workspace>\<my project>\bin (Access is denied) at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(Unknow

我有一个程序可以将文件从自身(在
.jar
内部)复制到外部,但每当我尝试从Eclipse运行它时,它都会给我一个异常:

java.io.FileNotFoundException: <my workspace>\<my project>\bin (Access is denied)
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(Unknown Source)
    at java.util.jar.JarFile.<init>(Unknown Source)
    at java.util.jar.JarFile.<init>(Unknown Source)
java.io.FileNotFoundException:\\bin(访问被拒绝)
位于java.util.zip.ZipFile.open(本机方法)
位于java.util.zip.ZipFile。(未知源)
位于java.util.jar.JarFile。(未知源)
位于java.util.jar.JarFile。(未知源)
我猜这是因为Eclipse不会在每次运行时生成一个
.jar
。通过导出runnable jar,我可以完美地运行我的程序,但是每次我想要测试程序时,导出都是冗长而痛苦的


有没有什么方法可以让Eclipse在每次运行时都制作一个
.jar
(我知道这会很慢,但没关系)。或者至少模拟一个jar文件?

@Salain是正确的-但是如果您的用例只是在项目之外复制文件,那么忽略它们是否在jar中,并通过
YourClass.class.getResourceAsStream(“/path/to/file”)获取它们的句柄不是更容易吗

@Salain是正确的-但是如果您的用例只是在项目之外复制文件,那么忽略它们是否在jar中,并通过
YourClass.class.getResourceAsStream(“/path/to/file”)
获取它们的句柄不是更容易吗?

看起来像是@Salain的重新发布,但不完全是这样。这个问题询问您是否可以在每次构建时更新jar。我想要的是在构建时立即运行jar(我对ApacheAnt一无所知,但我知道它)。其他的答案会让这个过程更容易。我明白了。如果您想测试.jar,为什么不按照这个协议来测试它:从Eclipse导出为.jar,在shell中运行“java-jar myProject.jar”。@Salain是的,这就是我要做的。一切都很好,进展顺利,只是想知道你是否可以按run按钮,或者doble slick什么的,Eclipse会制作这个罐子并自动运行它。这是有效的,只是当你不得不做很多的时候有点痛苦。看起来像是@Salain的重新发布,但不完全是。这个问题询问您是否可以在每次构建时更新jar。我想要的是在构建时立即运行jar(我对ApacheAnt一无所知,但我知道它)。其他的答案会让这个过程更容易。我明白了。如果您想测试.jar,为什么不按照这个协议来测试它:从Eclipse导出为.jar,在shell中运行“java-jar myProject.jar”。@Salain是的,这就是我要做的。一切都很好,进展顺利,只是想知道你是否可以按run按钮,或者doble slick什么的,Eclipse会制作这个罐子并自动运行它。这是可行的,只是当你不得不做很多事情的时候有点痛苦。这比所有的zip文件都容易。是的,这肯定会更容易,但我正试图做的是修改jar中的一个文件。然后我发现你不能那样做。所以我通过解压它自己,在里面放一个文件,然后再次压缩它,使它工作起来。我知道我不必经历这么多麻烦,但我只希望它是一个
.jar
,你可以复制到任何你想复制的地方。@Java-这从来都不是一件容易的事,因为它与jar的设计目的相去甚远-作为一种分发应用程序代码和相关资源的简单方式。我建议您的应用程序应该写入的任何文件都应该存储在存档之外。或者,如果您只是尝试有条件地向jar中添加资源,那么像Ant或Maven这样的构建工具会有所帮助。这比所有zip工具都要简单。是的,这肯定会更容易,但我尝试的是修改jar中的文件。然后我发现你不能那样做。所以我通过解压它自己,在里面放一个文件,然后再次压缩它,使它工作起来。我知道我不必经历这么多麻烦,但我只希望它是一个
.jar
,你可以复制到任何你想复制的地方。@Java-这从来都不是一件容易的事,因为它与jar的设计目的相去甚远-作为一种分发应用程序代码和相关资源的简单方式。我建议您的应用程序应该写入的任何文件都应该存储在存档之外。或者,如果您只是尝试有条件地向jar添加资源,那么像Ant或Maven这样的构建工具会有所帮助。