- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在使用 Apache POI 和 docx4j 构建一个小型 java 应用程序,它可以保护 word 文档。在我的 IDE (Netbeans 8.1) 中构建和运行 Maven 项目时执行。
从命令行启动类时,会抛出 org/docx4j/openpackaging/exceptions/Docx4JException
的 java.lang.NoClassDefFoundError
$ java -jar DocxProtect-1.0-SNAPSHOT.jar Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: org/docx4j/openpackaging/exceptions/Docx4JException at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Class.java:2701) at java.lang.Class.privateGetMethodRecursive(Class.java:3048) at java.lang.Class.getMethod0(Class.java:3018) at java.lang.Class.getMethod(Class.java:1784) at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544) at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526) Caused by: java.lang.ClassNotFoundException: org.docx4j.openpackaging.exceptions.Docx4JException 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) ... 7 more
我确实使用 Maven 构建了一个 fat-jar,其中包含所有依赖项。从 IDE 运行项目时,它使用以下命令;
/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bin/java -classpath /Users/petervannes/NetBeansProjects/DocxProtect/target/classes:/Users/petervannes/.m2/repository/org/apache/poi/poi/3.14/poi-3.14.jar:/Users/petervannes/.m2/repository/commons-codec/commons-codec/1.10/commons-codec-1.10.jar:/Users/petervannes/.m2/repository/org/docx4j/docx4j/3.2.2/docx4j-3.2.2.jar:/Users/petervannes/.m2/repository/org/plutext/jaxb-svg11/1.0.2/jaxb-svg11-1.0.2.jar:/Users/petervannes/.m2/repository/org/plutext/jaxb-xslfo/1.0.1/jaxb-xslfo-1.0.1.jar:/Users/petervannes/.m2/repository/org/plutext/jaxb-xmldsig-core/1.0.0/jaxb-xmldsig-core-1.0.0.jar:/Users/petervannes/.m2/repository/net/engio/mbassador/1.1.10/mbassador-1.1.10.jar:/Users/petervannes/.m2/repository/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5.jar:/Users/petervannes/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.5/jcl-over-slf4j-1.7.5.jar:/Users/petervannes/.m2/repository/org/slf4j/slf4j-log4j12/1.7.5/slf4j-log4j12-1.7.5.jar:/Users/petervannes/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/Users/petervannes/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar:/Users/petervannes/.m2/repository/commons-io/commons-io/1.3.1/commons-io-1.3.1.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/xmlgraphics-commons/1.5/xmlgraphics-commons-1.5.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/fop/1.1/fop-1.1.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-svg-dom/1.7/batik-svg-dom-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-anim/1.7/batik-anim-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-css/1.7/batik-css-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-dom/1.7/batik-dom-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-parser/1.7/batik-parser-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-util/1.7/batik-util-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-bridge/1.7/batik-bridge-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-script/1.7/batik-script-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-js/1.7/batik-js-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-xml/1.7/batik-xml-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-awt-util/1.7/batik-awt-util-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-gvt/1.7/batik-gvt-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-transcoder/1.7/batik-transcoder-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-svggen/1.7/batik-svggen-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-extension/1.7/batik-extension-1.7.jar:/Users/petervannes/.m2/repository/org/apache/xmlgraphics/batik-ext/1.7/batik-ext-1.7.jar:/Users/petervannes/.m2/repository/org/apache/avalon/framework/avalon-framework-api/4.3.1/avalon-framework-api-4.3.1.jar:/Users/petervannes/.m2/repository/org/apache/avalon/framework/avalon-framework-impl/4.3.1/avalon-framework-impl-4.3.1.jar:/Users/petervannes/.m2/repository/xalan/xalan/2.7.1/xalan-2.7.1.jar:/Users/petervannes/.m2/repository/xalan/serializer/2.7.1/serializer-2.7.1.jar:/Users/petervannes/.m2/repository/net/arnx/wmf2svg/0.9.0/wmf2svg-0.9.0.jar:/Users/petervannes/.m2/repository/org/apache/poi/poi-scratchpad/3.8/poi-scratchpad-3.8.jar:/Users/petervannes/.m2/repository/org/antlr/antlr-runtime/3.3/antlr-runtime-3.3.jar:/Users/petervannes/.m2/repository/org/antlr/stringtemplate/3.2.1/stringtemplate-3.2.1.jar:/Users/petervannes/.m2/repository/antlr/antlr/2.7.7/antlr-2.7.7.jar:/Users/petervannes/.m2/repository/com/google/guava/guava/17.0/guava-17.0.jar com.reddipped.docxprotect.DocxProtect
因此,不是执行 fat jar,而是执行编译后的类并使用项目中 lib 文件夹中的类。
我比较了 fat-jar 的 MANIFEST 中的所有类和从 Netbeans 执行时的类路径。两者是相同的。令我惊讶的是,NoClassDefFoundError 是为包含在 jar 中的类引发的。
有什么想法、提示、技巧来解决这个问题吗?干杯,彼得
==更新1 ==
MANIFEST.MF 中的类路径格式似乎很奇怪。 classtpath 的每一新行似乎都有一个缩进字符,它会中断 jar 的路径。
根据JAR File Specification jar 文件之间应该有空格,而不是文件名中。
Class-Path: The value of this attribute specifies the relative URLs of the extensions or libraries that this application or extension needs. URLs are separated by one or more spaces. The application or extension class loader uses the value of this attribute to construct its internal search path.
list 版本:1.0 builder :petervannes类路径:lib/poi-3.14.jar lib/commons-codec-1.10.jar lib/docx4j-3.2 .2.jar lib/jaxb-svg11-1.0.2.jar lib/jaxb-xslfo-1.0.1.jar lib/jaxb-xml dsig-core-1.0.0.jar lib/mbasador-1.1.10.jar lib/slf4j-api-1.7.5.jar lib/jcl-over-slf4j-1.7.5.jar lib/slf4j-log4j12-1.7.5.jar lib/log4j-1.jar 2.17.jar lib/commons-lang-2.4.jar lib/commons-io-1.3.1.jar lib/xmlgra phics-commons-1.5.jar lib/fop-1.1.jar lib/batik-svg-dom-1.7.jar lib/b atik-anim-1.7.jar lib/batik-css-1.7.jar lib/batik-dom-1.7.jar lib/bat ik-parser-1.7.jar lib/batik-util-1.7.jar lib/batik-bridge-1.7.jar lib/batik-script-1.7.jar lib/batik-js-1.7.jar lib/batik-xml-1.7.jar lib/ batik-awt-util-1.7.jar lib/batik-gvt-1.7.jar lib/batik-transcoder-1.7 .jar lib/batik-svggen-1.7.jar lib/batik-extension-1.7.jar lib/batik-e xt-1.7.jar lib/avalon-framework-api-4.3.1.jar lib/avalon-framework-im pl-4.3.1.jar lib/xalan-2.7.1.jar lib/serializer-2.7.1.jar lib/wmf2svg -0.9.0.jar lib/poi-scratchpad-3.8.jar lib/antlr-runtime-3.3.jar lib/s tringtemplate-3.2.1.jar lib/antlr-2.7.7.jar lib/guava-17.0.jar创建者:Apache Maven 3.0.5构建Jdk:1.8.0_60
最佳答案
解决了,最初使用 maven-jar-plugin 来构建 jar。用 maven-shade-plugin 2.4.3 替换此插件后,jar 运行没有问题。可能是 6 个重叠的类导致了该问题。
关于java - 在 IDE 外部执行时出现 NoClassDefFoundError: org/docx4j/openpackaging/exceptions/Docx4JException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38180641/
我有一个来自 C# 库的 Paragraph 对象 DocX并尝试设置 LineSpacing 属性但没有任何效果? internal static Paragraph StandardFormat(
我正在寻找一种方法来提取文档中每个单词的位置 (x, y) 和属性(字体/大小)。 从 python-docx 文档中,我知道: Conceptually, Word documents have t
我有一个带有空表的 .docx 模板,我要在其中添加值: def manipulate_table(): table = doc.tables[0] table.cell(0, 0).text = '
我目前正在开发一个将 docx 文件作为输入并使用它来构建 html 页面的库,由于 docx 的模糊和缺乏文档,我不得不严重依赖示例输出来决定如何处理某些事情。其中之一是超链接。 就我目前所见,do
使用以下代码,我尝试创建一个文档,其中第 2 页和第 3 页为横向,而其他页为纵向。所有尺寸都应为 8.5"x 11"。 using (System.IO.MemoryStream ms = new
我使用了 python-docx 中的示例,在运行代码后,我找不到 docx 文件在哪里,我可以指出要添加的特定路径吗? from docx import Document from docx.sha
我对 python-docx 中“运行级别内容”的概念有些困惑。我明白,如果我想检查一个段落是否以粗体显示,我需要检查 run.bold,但究竟是什么它? 官方定义是:运行是与内联内容最密切相关的对象
我了解到 .docx 文件基本上是二进制文件。但我不知道下面的结构。 .docx 文件的基本结构是什么?比如,标题有多长?实际的文档内容从什么时候开始?最后有签名吗? 基本上,.docx 文件的结构是
我正在尝试将 .adoc 文件转换为 .docx 实际上我正在使用: asciidoctor file.adoc -o file.html pandoc -s -S file.html -o outp
我可能错过了一些东西或犯了一个错误,无论如何,我似乎无法访问 .docx 模板中字典中的数据。文档说它的工作方式类似于 jinja2,但使用 {{ dict['dict_key'] }} 即使在 if
我遇到了有关如何使用 C# 合并 docx 文件的解决方案: Append multiple DOCX files together 在此解决方案中,他遍历文件并将正文“outerxml”复制到新文档
我正在使用 Docx dll 获取段落信息但无法获取段落格式(字体大小-字体名称-字体颜色) 这是我的代码: using (DocX document = DocX.Load("Tes
使用 Markdown 代码块时,DOCX 文档中生成的等宽字体大小太大。 我可以通过指定自定义 template.docx 文件来调整段落的字体大小,但由于某种原因,生成的代码块不使用段落样式,这与
doc=Document() table = doc.add_table(rows = 13, cols = 5) table.style = 'Table Grid' row = table.row
我想打开一个现有的 Word 文档,我已经在其中添加了页码,然后向其中添加了一些文本和标题。 这是我如何尝试实现目标的基本示例 #!/usr/bin/env python from docx impo
我想使用 DocX Library 将图像添加到 C# 中的 Word 文件中.问题是我在网上找不到任何东西。 情况 我知道如何创建文件,我知道如何在文件中写入文本。遗憾的是,图书馆的文档非常小。希望
我已经下载并开始使用 DocX library .我有一个名为 template.docx 的文档正在加载到内存中。我在该文档中有一个表,其中包含 id = 241。我想通过它的 id 获取该表并向其
是否可以使用应用了样式的 python-docx 将 HTML 插入到文档中?我唯一需要做的就是斜体。 例如如何插入"Today is Saturday."星期六实际上是用斜体插入的吗? 谢谢! 最佳
我想在命令行 (Linux) 中执行此操作,这样我就可以自动执行它,而无需在中间设置用户界面。 最佳答案 WordprocessingML 中没有明确的页面布局模型。 但是,如果文件最后是由 Word
我必须以 docx 格式存储一些文档,但无法忍受使用 msword:我想编辑某种纯文本标记,除了基于 XML 的东西(我也不喜欢那样)和从/到那个到/从 docx 转换。 有什么选择吗? 编辑:由于人
我是一名优秀的程序员,十分优秀!