繁体   English   中英

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

[英]Eclipse Runnable JAR file export failed. No resources selected

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

“容器创建失败。有关更多信息,请参见详细信息。” <<详细信息:未选择资源。 请参阅详细信息以获取其他信息。 从给定的启动配置中找不到主要方法。

使用Windows Server 2012,最新的Eclipse,JDK和JRE。 清理并没有改变任何东西,也没有将项目复制到新项目。

降级到1.8也无济于事,我看了过去几个小时的一些建议,没有任何帮助。

当然,我在Runner.java类中具有静态void main(String [] args),并且如果您从Eclipse中单击“运行”(具有相同的运行配置),则效果很好。

截至目前找不到解决方案。

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

根据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-第2次更新:添加运行配置: https//s3.amazonaws.com/stackover/Screenshot_149.png

7/12-第3次更新:添加有关Eclipse的信息:

用于Java开发人员的Eclipse IDE版本:Oxygen.1a发行版(4.7.1a)内部版本号: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.");

}

我解决了问题,将项目导出为存档文件。 然后,我打开了一个新的工作区,并导入了已归档的项目。 之后,我尝试将项目导出为可运行的jar,两次尝试后,jar会按原样运行。

我仍然不知道确切的原因是什么,但我希望有人遇到同样的问题会有所帮助。

看到

Eclipse无法创建可运行的jar-未选择资源

通过将项目导出到常规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计划任务。 因此,现在我可以通过这种方式获得所需的东西,但是我仍然无法将其导出为可运行的Jar。

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

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

我有一个在Eclipse中开发的普通Java项目(Windows版本:Oxygen.3a发行版(4.7.3a)),该项目不允许我将其导出为可运行的JAR,并带有错误消息“未选择运行资源” (假设所选入口点中没有公共静态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构建路径>库(Tab)> JRE系统库(条目)

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

因此,我对兼容模式在实际的Java 8版本中似乎不起作用感到困惑。 我目前能想到的唯一解释是,我忘记在设置中的另一个位置切换版本,或者导出可能依赖于我在安装期间可能获得的Java 10不支持的某些插件( :是大约一个月前完成的“全新” eclipse安装,除了我在初始安装期间可能选择的插件之外,我没有安装任何插件)。 最后一种可能性并不能解释为什么几天前我能够导出另一个项目(也是Java 8)。

TL; DR获得Java 8 JDK为我修复了它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM