我想从Android工作室运行一个jar。经过长时间的解决方案后,该jar文件运行完美。在Android Studio中导出包含Manifest属性的Jar文件?
现在我需要从android工作室导出jar文件。我从build/libs文件夹中获得了Jar文件。
但问题是jar文件显示错误。
无主清单属性,在 “app.jar”
所以我发现了这个解决方案。 Can't execute jar- file: "no main manifest attribute"
然后我读了关于MANIFEST.MF &添加邮件类到该文件。
jar {
manifest.attributes(
'Main-Class': "com.Remo.server.RemoServerApp"
)
}
将这些添加到我的gradle中后。我的MANIFEST.MF包含MainClass。
但我仍然得到同样的错误?我该如何解决这个问题?
注意:目标是我想从项目导出一个Runnable Jar文件。
UPDATE:
在MANIFEST.MF添加MainClass后。我陷入了下面的错误。
Exception in thread "main" java.lang.NoClassDefFoundError: com/Remo/protocol/RemoConnection
at com.Remo.server.RemoServerApp.<init>(RemoServerApp.java:33)
at com.Remo.server.RemoServerApp.main(RemoServerApp.java:97)
Caused by: java.lang.ClassNotFoundException: com.Remo.protocol.RemoConnection
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 2 more
MANIFEST.MF
清单-版本:1.0
主类:com.Remo.server.RemoServerApp
更新2
从您的解决方案是什么我了解到,我们需要将remoprotocol jar文件复制到remoserver。
remoserver项目gradle这个文件
apply plugin: 'java'
sourceSets {
main {
resources.srcDirs = ['src/main/resources']
}
}
dependencies {
compile project(':remoprotocol')
compile files('libs/bluecove-2.1.1.jar')
}
jar {
manifest.attributes(
'Main-Class': "com.remo.server.remoServerApp"
)
manifest.attributes(
'Class-Path': configurations.runtime.files.collect { it.getName() }.join(' '))
}
task copyRTDependenciesToLib(type: Copy) {
into "$buildDir/output/lib"
from configurations.runtime
}
运行gradle这个任务还我收到了同样的错误后。
听起来像是你需要添加classpath以及你的清单。你能发布完整的manifest.mf吗? – RaGe
是这个jar中包含的'com/Remo/protocol/RemoConnection'类吗?或者有没有任何外部依赖罐? – RaGe
@RaGe我已经将build.gradle文件中的协议模块作为依赖项引用。但它们不包含在我的jar文件中。我如何添加它们? – user3467240