我有一个从Eclipse中运行良好的项目.但是当我将它导出到一个可运行的JAR中,其中包含依赖项,它将无法运行.从控制台运行JAR时的错误是:
编辑(之前没有使用-jar运行它):
INFO: Loading XML bean definitions from class path resource [applicationContext-
framework.xml]
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: IOExc
eption parsing XML document from class path resource [applicationContext-framewo
rk.xml]; nested exception is java.io.FileNotFoundException: class path resource
[applicationContext-framework.xml] cannot be opened because it does not exist
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBea
nDefinitions(XmlBeanDefinitionReader.java:349)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBea
nDefinitions(XmlBeanDefinitionReader.java:310)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReade
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReade
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReade
r.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReade …Run Code Online (Sandbox Code Playgroud) 我正在安排一个任务(使用Windows任务调度程序),它只运行一个批处理文件.
这个批处理正在运行一个带有简单"Java -jar test.jar"的jar文件(Java程序).
当我从命令行手动运行脚本时,java程序运行良好,没有显示异常.
但是当任务调度程序执行相同操作(调用命令)时,java程序以异常结束:"ClassNotFoundException",用于我的jar中的一个类.
这是什么原因导致的?从命令行和任务调度程序调用jar时的差异是什么?
谢谢.
我正在使用Eclipse制作我创建的游戏的可执行jar文件,但是当我创建jar并运行它时,游戏中的图像不再显示.我在哪里存储图像,以便jar文件可以访问它们?
我正在使用maven来构建我的jar(Intellij IDEA IDE).它是使用Apache Camel构建的应用程序.我的pom.xml的摘录:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<mainClass>MainDriver</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我能够从maven中检索一个jar文件但是在运行后我得到的是NoClassDeFFound错误.
最后,我尝试使用one-jar插件(http://one-jar.sourceforge.net/).而且我已经开始工作了.我的问题是,如果不使用一个罐子,我可以实现相同的目标吗?我不喜欢一个罐子的包装,它的作用是当你从一个罐子中提取罐子时,你会发现你的app罐子,所以你需要在你的罐子上做一个额外的提取来获得到您的课程/资源.我的配置文件在资源上,有时我需要修改它.
谢谢!
我正在尝试创建一个应用程序überjar,但由于依赖于spring框架而遇到了问题.特别是,xml架构的命名空间是有问题的.你得到臭名昭着的NamespaceHandler问题:
Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/c]
Run Code Online (Sandbox Code Playgroud)
对于创建(简单)uber jar,使用ant创建一个bundle jar,但是如果你有spring依赖,那么这不起作用,因为spring jar有spring.handlers,spring.schemas和spring.tooling等文件.许多jar文件的META-INF目录.我认为,命名空间解析依赖于这些文件.
überjar似乎以某种方式包含所有必要的文件,但我猜测运行时只看到一个.
例如,我的超级罐的jar -tf显示(部分)
META-INF/spring.handlers
META-INF/spring.schemas
META-INF/spring.tooling
META-INF/license.txt
META-INF/notice.txt
META-INF/spring.factories
META-INF/spring.handlers
META-INF/spring.schemas
META-INF/spring.tooling
META-INF/license.txt
META-INF/notice.txt
META-INF/license.txt
META-INF/notice.txt
META-INF/spring.handlers
META-INF/spring.schemas
META-INF/spring.tooling
META-INF/license.txt
META-INF/notice.txt
META-INF/license.txt
Run Code Online (Sandbox Code Playgroud)
那么:问题..有没有办法创造一个有弹簧罐捆绑在里面的超级罐?我需要合并META-INF文件吗?任何人都有与蚂蚁构建文件合并的经验吗?
我有一个Java项目,我需要从我的项目中创建jar文件。任何人都可以告诉我最简单的方法是什么?
我得到一个错误膨胀类android.support.v4.widget.DrawerLayout.I我在下面的编码和相关的截图发布了详细说明.
堆栈跟踪:
11-04 07:35:04.404: E/AndroidRuntime(1427): FATAL EXCEPTION: main
11-04 07:35:04.404: E/AndroidRuntime(1427): Process: com.example.steve, PID: 1427
11-04 07:35:04.404: E/AndroidRuntime(1427): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.steve/com.example.steve.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class android.support.v4.widget.DrawerLayout
11-04 07:35:04.404: E/AndroidRuntime(1427): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
11-04 07:35:04.404: E/AndroidRuntime(1427): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
11-04 07:35:04.404: E/AndroidRuntime(1427): at android.app.ActivityThread.access$800(ActivityThread.java:135)
11-04 07:35:04.404: E/AndroidRuntime(1427): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
11-04 07:35:04.404: E/AndroidRuntime(1427): at android.os.Handler.dispatchMessage(Handler.java:102)
11-04 07:35:04.404: E/AndroidRuntime(1427): at android.os.Looper.loop(Looper.java:136)
11-04 07:35:04.404: E/AndroidRuntime(1427): at android.app.ActivityThread.main(ActivityThread.java:5017)
11-04 07:35:04.404: E/AndroidRuntime(1427): at java.lang.reflect.Method.invokeNative(Native Method)
11-04 07:35:04.404: E/AndroidRuntime(1427): at java.lang.reflect.Method.invoke(Method.java:515) …Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题.如何在运行java -jar sample.jar时将整数数组作为参数传递.整数数组是我的输入.
还有一些其他选项,例如将数组作为逗号分隔值(如1,2,3)传递,并将字符串值转换为java中的整数数组.
我想知道是否还有其他选择.谢谢您的帮助!
在获取JAR文件的位置时,只要你的类路径只包含一个条目,就会说"这可以[获取可运行的jar文件的位置]".
这是我的代码:
public static void main(String[] args) {
System.out.println(System.getProperty("java.class.path"));
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个可运行的jar(使用Eclipse Export),当我运行它时,无论我将CLASSPATH设置为什么,我只获得runnable jar的路径.
例如:
C:\TEMP>set CLASSPATH=C:\TEMP\BackupCompilations\Photos;C:\FreeOCR\tessdata
C:\TEMP>echo %CLASSPATH%
C:\TEMP\BackupCompilations\Photos;C:\FreeOCR\tessdata
C:\TEMP>set CLASSPATH
CLASSPATH=C:\TEMP\BackupCompilations\Photos;C:\FreeOCR\tessdata
C:\TEMP>java -jar C:\Programs\bin\Test_one_prop.jar
C:\Programs\bin\Test_one_prop.jar
Run Code Online (Sandbox Code Playgroud)
我也尝试在命令行上使用-cp.
有人可以提出一个反例,其中返回的东西比我正在运行的jar文件的位置更多/更多吗?
(理解在Eclipse中它返回我的项目的bin文件夹.)
这是我唯一关注的用例:将此程序作为可运行的jar运行.
谢谢.
我有一个肥胖的罐子,我正试图得到Kotlin的实例ScriptEngine.
出于调试目的,我正在迭代可用的脚本引擎工厂并获取引擎.
val scriptEngineManager = ScriptEngineManager()
for (factory in scriptEngineManager.engineFactories) {
val scriptEngine = factory.scriptEngine
}
Run Code Online (Sandbox Code Playgroud)
当它击中Kotlin的引擎时,它失败并出现以下异常:
Exception in thread "main" java.io.FileNotFoundException: Cannot find kotlin compiler jar, set kotlin.compiler.jar property to proper location
at org.jetbrains.kotlin.script.jsr223.KotlinJsr223ScriptEngineFactoryExamplesKt$kotlinCompilerJar$2.invoke(KotlinJsr223ScriptEngineFactoryExamples.kt:100)
at org.jetbrains.kotlin.script.jsr223.KotlinJsr223ScriptEngineFactoryExamplesKt$kotlinCompilerJar$2.invoke(KotlinJsr223ScriptEngineFactoryExamples.kt)
at kotlin.SynchronizedLazyImpl.getValue(Lazy.kt:130)
at org.jetbrains.kotlin.script.jsr223.KotlinJsr223ScriptEngineFactoryExamplesKt.getKotlinCompilerJar(KotlinJsr223ScriptEngineFactoryExamples.kt)
at org.jetbrains.kotlin.script.jsr223.KotlinJsr223ScriptEngineFactoryExamplesKt.access$getKotlinCompilerJar$p(KotlinJsr223ScriptEngineFactoryExamples.kt:1)
at org.jetbrains.kotlin.script.jsr223.KotlinJsr223JvmDaemonLocalEvalScriptEngineFactory.getScriptEngine(KotlinJsr223ScriptEngineFactoryExamples.kt:56)
at davidsiro.invoices.InvoiceGeneratorKt.generateInvoice(invoiceGenerator.kt:16)
at davidsiro.invoices.MainKt.main(main.kt:11)
Run Code Online (Sandbox Code Playgroud)
我的胖jar包含所有依赖项(虽然解压缩),包括Kotlin Compiler.我正在使用Maven Assembly Plugin来构建它,它配置如下:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<archive>
<manifest>
<mainClass>${main.class}</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗? …
executable-jar ×10
java ×6
jar ×4
maven ×3
eclipse ×2
android ×1
apache-camel ×1
arrays ×1
executable ×1
image ×1
integer ×1
jsr223 ×1
kotlin ×1
maven-3 ×1
maven-plugin ×1
spring ×1