尝试创建 jar 时清单文件中的行太长
我在尝试构建 jar 时遇到太长的行错误。清单文件中的长行是类路径行,因为应用程序使用了大量第三方库。不用说,我使用的是 Windows :-( 和 Eclipse Java 1.6
我尝试了 Class-Path: lib
或 Class-Path: lib/
但它们不起作用。
I am getting a too long line error while trying to build a jar. the long line in the manifest file is the Class-Path line as the application uses a lot of third-party libraries. needless to say, I am using Windows :-( and Eclipse Java 1.6
I tried Class-Path: lib
or Class-Path: lib/
but they did not work.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
由于类路径中的 jar 文件数量较多,类路径太长。 “以 UTF8 编码形式,任何行的长度都不能超过 72 个字节(不是字符)。” [来自文档:java 5,java 8; “线长度”部分]。
使用以下方法解决该问题:
(1) 使用单独的行,以避免 java 包名称列表的行太长
(2) 在每行之前键入一个空格,例如:
The classpath is too long due to the number of jar files in it. «No line may be longer than 72 bytes (not characters), in its UTF8-encoded form.» [from docs: java 5, java 8; «Line length» section].
use as the following way to resolve the problem:
(1) use separate lines, to avoid too long a line for java package name lists
(2) type a preceding space before each folloing lines, for example:
单个字符对我来说不起作用(Java 8,IntelliJ)。我在开头使用了两个字符,在行尾没有使用任何字符(从上面的示例中看不出来),在末尾使用了两个新行,例如,
我还避免将多个罐子放在一行上,因为这没有出现工作(即使行少于 72 字节)。
导致我得出这个解决方案的原因是(1)当然,我不断收到各种未找到类的异常,以及(2)当我检查 jar 文件中生成的清单文件时,jar 之间的间距丢失了 - 我认为它默默地失败了,因为除了类未找到异常之外,没有报告错误。我的工作生成的清单文件如下所示:
The single character didn't work for me (Java 8, IntelliJ). I used two characters at the start and no characters at the end of the line (wasn't apparent from the above example) and two new lines at the end, e.g.
I also avoided placing multiple jars on one line as that didn't appear to work (even with lines less than 72 bytes).
What led me to arrive at this solution was (1) I kept getting various class not found exceptions, of course and (2) When I examined the generated manifest file in the jar file, the spacing between the jars was missing - I assume that it was silently failing because there was no reported error apart from the class not found exceptions. My working, generated manifest file looks like this:
Voodoochild 的答案让我走上了正轨,但对我来说不太清楚,所以引用了规范:
没有一行可以超过 72 个字节(不是字符),以 UTF8 编码的形式。如果某个值会使初始行比此长,则应在额外的行上继续(每行以单个空格开头)。
清单示例:
The answer of Voodoochild put me on the right track but wasn't so clear to me so quoting the specs:
No line may be longer than 72 bytes (not characters), in its UTF8-encoded form. If a value would make the initial line longer than this, it should be continued on extra lines (each starting with a single SPACE).
Manifest example:
由于某种原因,那里的多空间解决方案对我不起作用。所以我研究了 Eclipse 的 export-runnable-jar 对话框是如何做到这一点的。它添加一个 Ascii“LF”,然后添加一个空格作为换行符。
在 Java 中:
char LF = (char) 0x0A;
The multi-space solutions up there didn't work for me for some reason. So I looked at how Eclipse's export-runnable-jar dialog does it. It adds an Ascii "LF" and then a space as a linebreak.
In Java:
char LF = (char) 0x0A;
对于太长的行错误
使用类路径:
*.*
For too long line error
Use Class-Path:
*.*