我正在尝试导出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.");
}
答案 0 :(得分:0)
我修复了问题,我将项目导出为存档文件。然后我打开了一个新的工作区并导入了已归档的项目。之后我尝试将项目导出为一个可运行的jar,经过两次尝试后,jar就像应该的那样运行。
我仍然不知道具体原因是什么,但我希望有人如何遇到同样的问题会发现这有用。
见
答案 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为我修复它。