Eclipse Runnable JAR文件导出失败。未选择资源

时间:2017-12-05 12:24:15

标签: java eclipse executable-jar

我正在尝试导出Runnable Jar以便使用.bat文件运行我的项目,但是当尝试导出Runnable jar时,它会因按摩而失败:

“Jar创建失败。有关其他信息,请参阅详细信息。” < <细节 : 没有选择资源。详细信息请参阅其他信息。  无法从给定的启动配置中找到主要方法。

使用Windows Server 2012,最新的eclipse,jdk和jre。清洁没有改变任何东西,也没有将项目复制到新的项目。

降级到1.8并没有帮助,我看了几个小时的一些建议,没有帮助。

诅咒我的Runner.java类中有静态void main(String [] args),如果你点击Eclipse中的“Run”(使用相同的Run Configuration),它就可以完美运行。

截至目前无法找到解决方案。

6/12 - 更新:按照howlger的要求添加导出过程的屏幕截图。

根据Akshay Bahadur的建议,我也尝试了新的工作空间,结果相同。

https://s3.amazonaws.com/stackover/Screenshot_141.png

https://s3.amazonaws.com/stackover/Screenshot_142.png

https://s3.amazonaws.com/stackover/Screenshot_143.png

6/12 - 第二次更新:添加 运行配置: https://s3.amazonaws.com/stackover/Screenshot_149.png

7/12 - 3nd更新:添加 关于Eclipse:

适用于Java开发人员的Eclipse IDE 版本:Oxygen.1a版本(4.7.1a) 构建ID:20171005-1200 操作系统:Windows Server 2012 R2,v.6.3,x86_64 / win32

https://s3.amazonaws.com/stackover/Screenshot_155.png

并且main()函数是普通的Java - 没有Maven或Gradle:

public static void main(String[] args) {
    boolean errorNotHappened = true;
    boolean errorWithMailNotHappened = true;
    boolean performDownload = true;
    boolean performEmailSent = true;
    boolean performDataManipulation = true;

    System.out.println("***~~~*** Starting job. If you want more details - turn on debug mode");

    //Downloader d = new Downloader();
    printMsg("Date to use with files: "+getDateToUse());
    printMsg("Write mail for date: "+getYasterdayNiceDate());

    if (performDownload) 
    {
        Downloader d = new Downloader();
        d.connectAnd(); //connect to pair server
        errorNotHappened = d.downloadFiles();
        d.disconnectFromServer();
    }

    if (errorNotHappened && performDataManipulation) 
    {
        Manipulator m = new Manipulator();
        errorNotHappened = m.work();
        m.terminateManipulator();
    }


    if (performEmailSent) 
    {
        GoogleMailer gmail = new GoogleMailer();
        gmail.startMailingService();
        if (errorNotHappened)
            errorWithMailNotHappened = gmail.sendMailWithAttach();
        else
            gmail.sendFailedMail();
        if(!errorWithMailNotHappened)
        {
            gmail.sendFailedMail();
        }
    }
    System.out.println("***~~~*** Job ended.");

}

3 个答案:

答案 0 :(得分:0)

我修复了问题,我将项目导出为存档文件。然后我打开了一个新的工作区并导入了已归档的项目。之后我尝试将项目导出为一个可运行的jar,经过两次尝试后,jar就像应该的那样运行。

我仍然不知道具体原因是什么,但我希望有人如何遇到同样的问题会发现这有用。

Eclipse cannot create runnable jar - No resources selected

答案 1 :(得分:0)

我设法通过将项目导出到常规Jar文件(不是我最初尝试过的Runnable)并使用以下内容从CMD激活来完成工作:

java -cp "C:\Users\Administrator\Desktop\runDebug\rundebug.jar";"C:\Users\Administrator\Desktop\runDebug\activation.jar";"C:\Users\Administrator\Desktop\runDebug\commons-net-3.1.jar";"C:\Users\Administrator\Desktop\runDebug\mail.jar" pairbb.Runner

我已将此命令写入BAT文件,并将此BAT文件设置为Windows计划任务。所以现在我得到了我需要的东西,但我仍然无法将其导出为Runnable Jar。

答案 2 :(得分:0)

我的情况可能并不完全适用于您的情况,但考虑到这个问题是我在尝试解决问题时出现的第一个问题,我将分享我的经验:

如果在使用Java 10 JDK编码时遇到类似问题,可能会有用。

我有一个我在Eclipse中开发的普通Java项目(Windows版本:Oxygen.3a版本(4.7.3a)),它不允许我将其导出为可运行的JAR,并显示错误消息“No resource selected”for运行配置(表示所选入口点中没有 public static void main(String [] args)。我的机器上有最新的JDK(Java 10),但我编写的是Java 8(因为你可以在Eclipse的设置中设置兼容性)。

由于我在浏览帖子时看到了与Java 9相关的一些问题,我最终决定实际下载“旧Java”版本(又名Java 8)。 所以,我做的是:
1.只需下载Java 8 JDK
2.更新我的JAVA_HOME变量以指向新安装的版本,而不是Java 10 3.从已安装的JRE中删除Java 10&添加Java 8代替

一旦我完成了这些步骤,我就运行了我的代码,然后在运行时遇到了一些正则表达式的问题(我使用的是Java不喜欢的无限外观,但是从Java 10开始,我认为它似乎是允许的,我假设),将它们改为有界和毫无问题地运行它。

然后出口终于再次起作用。 请注意,Java版本(来自Java 10 JDK)设置如下: 项目>属性> Java构建路径>库(标签)> JRE系统库(条目)

对于Java编译器,我已经将“从执行环境使用合规性”的复选框设置为Java 1.8。

所以我对兼容模式似乎不像真正的Java 8版本有点困惑。我目前唯一可以解释的解释是,我忘了在设置中的另一个位置切换版本,或者导出可能依赖于我在安装期间可能获得的一些不支持Java 10的插件(注意:这是我一个月前做过的'全新'eclipse安装&我没有安装任何插件,除了我在初始安装时选择的内容)。最后一种可能性并没有解释为什么我几天前能够导出另一个项目(也就是Java 8)。

TL; DR让Java 8 JDK为我修复它。