我有看起来像这样的文件夹:
foo/
Bar.java
Bar.class
Foo.java
Foo.class
manifest.mf
Run Code Online (Sandbox Code Playgroud)
.java 文件都在一个名为 x 的包中:
package x;
Run Code Online (Sandbox Code Playgroud)
我生成 .class 文件:
javac foo/*.java
Run Code Online (Sandbox Code Playgroud)
然后我尝试打包为可运行的 jar 格式:
jar cmf foo.jar foo/manifest.mf foo/*.class
Run Code Online (Sandbox Code Playgroud)
但我收到此错误:
java.io.IOException: line too long
at java.base/java.util.jar.Attributes.read(Attributes.java:381)
at java.base/java.util.jar.Manifest.read(Manifest.java:228)
at java.base/java.util.jar.Manifest.<init>(Manifest.java:80)
at java.base/java.util.jar.Manifest.<init>(Manifest.java:72)
at jdk.jartool/sun.tools.jar.Main.run(Main.java:264)
at jdk.jartool/sun.tools.jar.Main.main(Main.java:1669)
Run Code Online (Sandbox Code Playgroud)
manifest.mf 的内容只是:
Main-Class: x.Bar
Run Code Online (Sandbox Code Playgroud)
它编译时javac不确定发生了什么,或者为什么它不喜欢清单文件,有人知道吗?
我可以成功地使用Gradle编译胖 JAR,但是在最近从“编译”依赖项规范切换到“实现/api”规范后运行 JAR 时遇到问题。我已经确定问题仅发生在以下两种情况之一。应用程序在 IntelliJ 中的任一情况下运行。
第一/问题:
dependencies {implementation 'no.tornado:tornadofx:1.7.18'}
Run Code Online (Sandbox Code Playgroud)
第二/作品:
dependencies {compile'no.tornado:tornadofx:1.7.18'}
Run Code Online (Sandbox Code Playgroud)
JAR 在这两种情况下都会编译。当我尝试在命令行上启动第一个案例 JAR 时出现问题,并引发以下错误。
C:\aaa_eric\code\testr\mic\build\libs>java -jar mic-1.0-snapshot.jar 错误:无法找到或加载主类 app.MyApp 引起:java.lang.NoClassDefFoundError:tornadofx/App
这是 build.gradle 中的 JAR 任务。tornadofx 依赖项是否可能在编译时可用,但在运行时不可用?谢谢你的帮助。
jar {
manifest {
attributes 'Main-Class': 'app.MyApp'
}
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
Run Code Online (Sandbox Code Playgroud) 该问题已被编辑,请提前查看更新部分以及我处理它以找到解决方案的所有不同方式。
初始问题
我试图为我的项目创建一个可执行的 jar 文件,但在尝试运行它时遇到了错误no main manifest attribute, in kerkinibackend.jar。
该项目是一个 Spring Boot 应用程序,我使用 IntelliJ 作为 IDE。
我试图从类似的问题中找到最常见的情况,但我无法让它发挥作用。
我采取的步骤是:
java -jar kerkinibackend.jar,然后出现错误消息。问题是该MANIFEST.MF文件实际上是在src/main/java/META-INFManifest-Version: 1.0
Main-Class: com.teicm.kerkinibackend.KerkinibackendApplication
Run Code Online (Sandbox Code Playgroud)
我在 pom.xml 中也确实有所需的依赖项
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
更新
我通过将清单的默认生成更改为资源中来解决该问题。
现在 Jar 运行了,但是我从 Spring 中得到并出错 …
使用放心的 jar 发出 GET api 请求时,我的程序在作为 TestNg 运行时抛出以下错误
输出:
java.lang.NoClassDefFoundError: io/restassured/path/json/mapper/factory/JsonbObjectMapperFactory
at io.restassured.config.RestAssuredConfig.<init>(RestAssuredConfig.java:41)
at io.restassured.RestAssured.<clinit>(RestAssured.java:421)
at SimpleGetTest.GetWeatherDetails(SimpleGetTest.java:13)
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.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
Caused by: java.lang.ClassNotFoundException: io.restassured.path.json.mapper.factory.JsonbObjectMapperFactory
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown …Run Code Online (Sandbox Code Playgroud) 当我"&"用作参数时,命令行将 & 视为新命令的开头,但 & 是我的参数的一部分。例如-如果我运行java -jar Runner.jar ABC&DEF.
我想要参数值,"ABC&DEF"但我收到如下错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
at Runner.main(Runner.java:11)
Run Code Online (Sandbox Code Playgroud)
'DEF' 不是内部或外部命令,也不是可运行的程序或批处理文件。
我有一个WAR文件,我需要添加两个文件.目前,我这样做:
File war = new File(DIRECTORY, "server.war");
JarOutputStream zos = new JarOutputStream(new BufferedOutputStream(new FileOutputStream(war)));
//Add file 1
File file = new File(DIRECTORY, "file1.jar");
InputStream is = new BufferedInputStream(new FileInputStream(file));
ZipEntry e = new ZipEntry("file1.jar");
zos.putNextEntry(e);
byte[] buf = new byte[1024];
int len;
while ((len = is.read(buf, 0, buf.length)) != -1) {
zos.write(buf, 0, len);
}
is.close();
zos.closeEntry();
//repeat for file 2
zos.close();
Run Code Online (Sandbox Code Playgroud)
结果是前面的内容被破坏了:WAR只有我刚刚添加的2个文件.是否有某种追加模式,我没有使用或什么?
我正在尝试编译这个 slick2d示例(第一个),但我无法让它工作.这是代码:
import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.SlickException;
/**
* @author panos
*/
public class WizardGame extends BasicGame
{
public WizardGame()
{
super("Wizard game");
}
public static void main(String[] arguments)
{
try
{
AppGameContainer app = new AppGameContainer(new WizardGame());
app.setDisplayMode(500, 400, false);
app.start();
}
catch (SlickException e)
{
e.printStackTrace();
}
}
@Override
public void init(GameContainer container) throws SlickException
{
}
@Override
public void update(GameContainer container, int delta) throws SlickException
{
}
public void render(GameContainer container, …Run Code Online (Sandbox Code Playgroud) 我有这些文件board.class和x4.class(x4.class有main()方法).
我写道,要包装这些文件
jar cf x4.jar *.class
Run Code Online (Sandbox Code Playgroud)
并得到一个x4.jar文件.
我将这个x4.jar文件复制到我的桌面(在Windows Vista上)并双击它.我收到此错误:
无法加载Main-Class清单属性
C:\Users\eSKay\Desktop\x4.jar
我该怎么做才能使这个文件作为jar可执行文件运行(不安装任何软件)?
更新: 我使用清单文件来解决问题.我有我需要的jar文件,如果你这样做,它运行正常:
java -jar x4.jar
Run Code Online (Sandbox Code Playgroud)
但是,当我双击x4.jar没有任何反应时,我检查了任务管理器,发现javaw.exe正在后台启动,但它没有显示原始程序给出的输出.
问题是什么?
可以有人解释我如何创建jar文件.我的源文件夹有各种子文件夹和图像文件.你可以从以下网址http://img63.imageshack.us/gal.php?g=capturev.png看到解释源文件夹结构的图片 .当使用eclipse export jar函数创建jar时,它只包含类文件,但我想为源文件夹中的所有内容创建jar文件.第三张图片显示了jar创建时获得的窗口.它没有其他文件夹和图像可供选择.
我有一个jar文件,其中包含一些我想在项目中使用的类.我在命令行工作而不是在eclipse中工作.
请告诉我如何在我的项目的jar文件中使用这些类.
jar ×10
java ×9
build.gradle ×1
class ×1
classpath ×1
eclipse ×1
executable ×1
manifest ×1
maven ×1
parameters ×1
rest-assured ×1
runnable-jar ×1
spring-boot ×1
testng ×1
windows ×1