【问题标题】:Using docx4j in XPages applications在 XPage 应用程序中使用 docx4j
【发布时间】:2019-06-12 19:16:27
【问题描述】:

我正在尝试在 XPages 应用程序中安装 docx4j 开源 Java 库,但到目前为止没有成功。我已经下载了 docx4j-3.1.0.jar 并将其添加到 domino 服务器和本地计算机上的 \jvm\lib\ext 文件夹中。我还使用 Package Explorer 视图将 docx4j-3.1.0.jar 添加到 WebContent\WEB-INF\lib 文件夹,之后我右键单击 .jar 并选择“构建路径”->“添加到构建路径”这样 .jar 现在就会出现在“Referenced Libraries”下。

在我用来测试的 Java 类中,我看到消息“此元素没有附加源,在附加的 Javadoc 中找不到 Javadoc。” 我的代码如下:

package TESTPackage;

import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

public class JavaDoc {

  public void createJavaDoc() {

    try {
      WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage();
      wordMLPackage.getMainDocumentPart().addParagraphOfText("Hello Word!");
      wordMLPackage.save(new java.io.File("C:\\Temp\\HelloWord1.docx"));

    } catch (Exception e) {
      e.printStackTrace();
    }

  }

}

还有什么我必须做的建议吗?

【问题讨论】:

  • 您还想检查 Apache POI。 Docx 代码已由 MS 直接提供 AFAIK
  • 不正确,docx4j 是一个使用 OpenXML 的 Java 库。
  • 如果代码编译成功,你的类路径就OK了。正如保罗在回答中提到的那样,附加的源消息只是关于提取源代码。 docx4j 本身是不够的,但是,您可能会发现您需要安装此处列出的各种依赖项:docx4java.org/downloads.html

标签: java ms-word xpages docx4j


【解决方案1】:

我能够通过 XPage 中的按钮在 Notes 客户端中运行您的代码。让这段代码正常工作涉及几个步骤(Domino 是一个痛苦的平台,用于可靠地运行 Java 代码):

  1. 将 docx4j 及其依赖项添加到您的工作站/服务器的 lib\ext 目录(NSF 中也不需要它们。事实上,从那里删除它们)。

  2. 如下编辑 Domino JVM java.policy 文件。 (这个文件一般在安装目录\jvm\lib\security下)。请注意,对于开发工作,可以将此行添加到顶部,但您不能将其投入生产:您需要通过通配符包名称或操作类型关注允许的操作:

    grant { permission java.security.AllPermission; };

  3. 重新启动 Notes/Domino Designer

  4. 构建您的项目。 注意:如果您改为“清理”项目,请记住旧式“包含”Java 文件(即在 Domino 8.5.2 或较早)将被删除,因此您需要重新创建它们。

  5. 按照您的帖子运行代码:现在应该会生成文件。

您遇到的问题可能归结为两件事:(1) 缺少依赖项;以及; (2) Domino 中禁止所需的类加载和反射操作的安全设置。

【讨论】:

  • 这也对我有用 :-) 非常感谢您的帮助!
  • @TonyGuiheen 很高兴听到这个消息!我用过 docx4j 很多,它是一个很棒的库。
【解决方案2】:

将 jar 添加到服务器上的 jvm\lib\ext 将意味着您在数据库中不需要它。但是您需要将它添加到相关位置以便 Domino Designer 看到它。完成后,您无需将其添加到 NSF,但您需要确保它在您放置 NSF 的所有服务器上。

将其存储在服务器和其他位置的替代方法是将其放在 WebContent\WEB-INF\lib 中,但这样就不会费心去找服务器了。

听起来你附加了错误的 jar 文件。您已附加了一个已编译的 jar。代码可以运行,但您会发现看不到 Javadoc 帮助。

您需要附加一个包含源文件的 jar。然后你会看到 Javadoc 内容帮助

【讨论】:

  • 谢谢,我会在 docx4j 网站上查看另一个 .jar 文件。
  • search.maven.org/remotecontent?filepath=org/docx4j/docx4j/3.1.0/… 但是为什么不从 GitHub 获取源代码呢?
  • 嗨,我已经安装了这个 .jar。但是它不包括 WordprocessingMLPackage。是否有包含 WordprocessingMLPackage 的源 jar?
  • (或者你正在处理多个混淆的类加载器)。
猜你喜欢
  • 2013-04-11
  • 1970-01-01
  • 2021-02-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多