如何正确地将java项目导出为可运行jar?

如何正确地将java项目导出为可运行jar?,java,eclipse,jar,export,rmi,Java,Eclipse,Jar,Export,Rmi,我正在努力学习java中的RMIAPI。一切终于开始运转了;我的服务器已启动并正在运行,我的客户端可以连接。 但是当我从Eclipse将项目导出为一个可运行的jar,客户端作为启动配置时,现在这个jar无法连接到我正在运行的服务器。我得到一个AccessControlException if (System.getSecurityManager() == null) { System.setProperty("java.security.policy", "src/myS

我正在努力学习java中的RMIAPI。一切终于开始运转了;我的服务器已启动并正在运行,我的客户端可以连接。 但是当我从Eclipse将项目导出为一个可运行的jar,客户端作为启动配置时,现在这个jar无法连接到我正在运行的服务器。我得到一个
AccessControlException

    if (System.getSecurityManager() == null) {
        System.setProperty("java.security.policy", "src/mySecurity");
        System.setSecurityManager(new SecurityManager());
    }
客户机和服务器都将这些作为其主要方法的第一行。所以我认为在我将项目导出为jar之后,他们找不到“mySecurity”文件?我能做什么

EDIT:当我访问项目中的.png文件时,我会这样做
MyClass.class.getResource(“/resources/myImage.png”)
,当作为jar导出时效果很好。但据我所知,只有.java文件应该放在我项目的
src
文件夹中?但是src文件夹之外的任何内容都不包括在jar文件中。(请注意,myImage.png位于src中)

因此,目前我导出jar并将其放在一个文件夹中,其中包含一个resources文件夹(我从IDE工作区复制的)。这是我应该采用的方法吗,或者我实际上可以将我的项目导出为一个可执行的jar,并使用与src相同级别的访问资源吗?

使用

-Djava.security.debug=access,failure,policy

policy
部分将精确显示正在加载的策略文件。其余部分帮助调试所有的
AccessControlExceptions
及其原因,并显示每种情况下有效的保护域,以及每种情况下的关联策略文件。

愚蠢的标题,修复了它。这会产生大量我不知道如何阅读的吉伯语。不过,我希望在这里找到什么?显然,问题在于导出我的项目,它告诉你JVM是否找到了你的策略文件,这是你真正需要知道的。如果有,你已经正确地导出了你的项目,你的问题就在别处。事实上,我知道没有。如果我将
mySecurity
放在与jar相同级别的
src
文件夹中,它就可以工作。经过长时间的研究,我现在才明白我真正的问题是什么,我觉得编辑把这一点讲得很清楚。似乎有很多重复的答案被接受了,但仍然没有我喜欢的:/
System.setProperty(“java.security.policy”,“src/mySecurity”)它正在用户目录中查找该文件。但是不应该,因为user.dir中应该只有.jar!我不能将字符串改为“在jar内”吗?
src
目录在部署时不在那里。仅在IDE中。不要把东西放在那里。