我尝试将我的项目导出为带有IntelliJ 9.0的jar.我的项目在Intellij中编译并运行没有任何问题,但是当我将它写入.jar并打开它时,它将显示错误.
我的主要课程类似于:
package Main
//Imports
object Main{
def main(args: Array[String]) {
println("Main: Hello, world!")
//do stuff
}
Run Code Online (Sandbox Code Playgroud)
现在,在工件窗口中,我创建了一个带有以下内容的.jar:
Main.Mainlib/javacsv lib/scala-compiler.jar lib/scala-library.jar lib/scalatest-1.0-test.jar lib/scalatest-1.0.jar lib/tools.jar lib/jtds-1.2.2.jar lib/flex-messaging-common.jar lib/flex-messaging-core.jar lib/spring.jar lib/mysql-connector-java-5.1.7-bin.jar lib/ojdbc14.jar lib/commons-logging.jar lib/postgresql-8.4-701.jdbc3.jar lib/log4j-1.2.15.jar lib/poi-3.6-20091214.jar lib/poi-ooxml-3.6-20091214.jar lib/dom4j-1.6.1.jar lib/poi-ooxml-schemas-3.6-20091214.jar lib/geronimo-stax-api_1.0_spec-1.0.jar lib/xmlbeans-2.3.0.jar lib/rt.jar lib/ifxjdbc.jar lib/db2jcc4.jar我已经仔细检查过所有这些类都在项目中并且是onnly类.请注意它包括lib/scala-compiler.jar和lib/scala-library.jar.
建立项目:java -jar myScalaApp.jar我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: scala/ScalaObject
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:675)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188) …Run Code Online (Sandbox Code Playgroud) 我有一个没有GUI的程序,我使用控制台!所以首先我从控制台的用户那里读取一行
BufferedReader userReader = new BufferedReader(new InputStreamReader(System.in));
然后我会在控制台中为用户写一个答案!
的System.out.println( "服务器:" +输出);
我想为它创建一个jar文件!但是如何在不使用GUI的情况下在jar文件中显示我的控制台?请帮我谢谢.
我写了一个shell脚本来运行一组实验,所以我不必手动完成.该脚本运行一个java .jar文件30次,并运行一组30次17次,更改其间的一些变量.
我调用这样的程序:
java -Djava.library.path=/Users/me/Desktop/Cfiles/DynamicCTGLayout/build/Release -jar [name of .jar file]
Run Code Online (Sandbox Code Playgroud)
但是,在程序运行时我无法并行执行任何操作,因为执行此行时,java可执行文件会弹出屏幕的最前端.从本质上讲,当我处理其他事情时,它每1-1.5分钟就会中断.所以我看了几个小时我实际上无法使用电脑.
有没有办法调用可执行文件,以便它不会弹出所有其他程序?
此致WhiteTiger
编辑:基本上我正在寻找与Windows相当的Mac OSX'
start /min java [arguments]
Run Code Online (Sandbox Code Playgroud) 我有一个名为snake.html的html文件,我想把它放在一个罐子里.运行jar时,主类应该在浏览器中打开这个html文件.我试过了:
public static void main(String[] args) throws IOException, URISyntaxException {
URL url = Snake.class.getResource("/WebContent/snake.html");
System.out.println(url);
// relative to the class location
Desktop.getDesktop().browse(url.toURI());
}
Run Code Online (Sandbox Code Playgroud)
如果我只是运行这段代码但是当我把它(和html文件)运行时,我会得到以下异常:
Exception in thread "main" java.io.IOException: Failed to mail or browse
jar:file:/Users/~user~/Desktop/Snake%20v0.1.jar!/WebContent/snake.html.
Error code: -10814
at apple.awt.CDesktopPeer.lsOpen(CDesktopPeer.java:52)
at apple.awt.CDesktopPeer.browse(CDesktopPeer.java:45)
at java.awt.Desktop.browse(Desktop.java:368)
at snake.Snake.main(Snake.java:26)
Run Code Online (Sandbox Code Playgroud)
我想知道我是否有类路径问题或者我没有正确地将jar指向文件.这个jar有两个目录,snake和WebContent.Snake有snake.class文件,WebContent有snake.html.
任何和所有帮助/批评赞赏.
我做了一个搜索,我可以看到很多人遇到了和我一样的问题,但没有一个解决方案对我有用.
基本上我在Eclipse中有一个来自旧Windows安装的Java项目.我已经清理并重建了它,因为起初它不会编译,但现在我将它导出为Runnable Jar.但是,我可以让应用程序出现的唯一方法是java -jar foo.jar在命令提示符下执行,或者在Eclipse中运行它.如果我在Windows资源管理器中双击JAR,即使我知道Java正确关联,因为其他Runnable Jars工作,也没有任何反应.
该项目仅在其构建路径库中列出了x86 JRE,并且列出的所有文件似乎都存在.我正在运行Windows 7 HP.
更新:对不起,我刚刚发现没有其他Runnable Jars正在工作.如果他们用launch4j包裹,他们工作虽然...
编辑:我从Eclipse导出的Runnable Jars在其他系统上运行正常,并在双击时加载
我有一个可执行.jar文件,我想作为一个Window服务运行,以便即使我退出也能保持执行.我搜索并发现了NSSM.但是,在完成配置后,当我开始服务时,它停止并打印Unexpected status SERVICE-STOPPED in response to start control.我刚才说我path并startup directory在Application标签上,没有别的.此外,我无法找到任何nssm可能创建的日志文件来检查实际发生了什么.
如果你有一个小程序,你可以运行jar文件,它将正常工作.但是如果你将jar文件转换为exe,你仍然需要java来运行你的exe文件,那么它们之间的区别是什么呢?为什么有些人将jar转换为exe?
我注意到,任何System.out.println()未通过命令行启动的JAR文件的调用(即用户双击启动的Runnable JAR文件)都不会打开控制台。
经过研究,我在网站上找到了多个答案:
这样做没有问题。但是您希望在哪里看到输出?
可执行jar中的“ System.out.println()”会怎样?
如果您以某种不附加控制台的方式运行代码(例如
javaw在Windows上,这是与可执行jar文件关联的默认程序),则输出将无处可去。它不会引起任何错误-文本只会丢失。
据我了解,System.out并不代表控制台。它确实表示可以由任何需要显示的数据处理的数据。我对吗?
System.out什么?我有一个Java项目,带有用于REST服务的嵌入式jetty服务器和jersey库.我正在使用Intellij来运行项目及其工作.问题是当我尝试执行生成的jar文件时.
所以我编写了一个在build.gradle文件中生成jar文件的任务.以下是build.gradle中的任务
task fatJar(type: Jar) {
baseName = project.name + '-all'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
with jar
manifest {
attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': 1.0
attributes 'Main-Class': 'EmbeddedJetty.EmbeddedJettyMain'
}
}
Run Code Online (Sandbox Code Playgroud)
运行以下命令时会生成jar文件
gradle clean build fatJar
Run Code Online (Sandbox Code Playgroud)
当我尝试使用该命令生成的jar文件时,我面临以下错误
java -jar projectname.rar
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:284)
at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:238)
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:273)
at java.util.jar.JarVerifier.update(JarVerifier.java:228) …Run Code Online (Sandbox Code Playgroud) 我们有payment.jar使用Spring Framework 3.1.2开发的文件.我们需要将它用作对其新版本为Spring Framework 5.x的新项目的依赖.
问题:当payment.jar用作依赖项时,payment.jar传递依赖项会添加到项目类路径中,从而导致Spring Framework 3和Spring Framework 5发生冲突.
我试过解决方案:
没有成功,胖JAR,将Spring Framework 3添加到项目中.(我做错了什么!)
因为在其中使用spring-ibatis实现payment.jar是行不通的.Spring Framework新版本不支持ibatis.
错误:
引起:java.lang.ClassNotFoundException:org.springframework.orm.ibatis.support.SqlMapClientDaoSupport
我的要求:
我需要使用payment.jar(使用Spring Framework 3.1.2)作为对Spring Framework 5.x的新项目的依赖,而没有上面提到的问题.
executable-jar ×10
java ×8
jar ×3
console ×2
windows ×2
cmd ×1
compilation ×1
executable ×1
gradle ×1
html ×1
macos ×1
maven ×1
maven-plugin ×1
nssm ×1
scala ×1
service ×1
spring ×1
system.out ×1