尝试在命令提示符下 运行 a POI-dependent class

Trying to run a POI-dependent class on Command Prompt

正如标题所说,我正在尝试在使用 Apache POI 库的命令提示符中 运行 class 但是当我 运行 这个命令时:

java -cp C:\Users\rperera\IdeaProjects\LinkingNames\libs; HyperlinkWriter

我收到这个错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/CreationHelper
    at java.lang.Class.getDeclaredMethods0(Native Method)
    at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    at java.lang.Class.getMethod0(Unknown Source)
    at java.lang.Class.getMethod(Unknown Source)
    at sun.launcher.LauncherHelper.getMainMethod(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.apache.poi.ss.usermodel.CreationHelper
    at java.net.URLClassLoader.run(Unknown Source)
    at java.net.URLClassLoader.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 6 more   

libs 文件夹包含下载时压缩的整个 POI 文件夹,所以我不确定为什么会抛出此错误。我还使用 IntelliJ 对此进行了测试,它 运行 很好。我知道命令提示符和 IntelliJ 处理库的方式不同,但我不确定为什么会这样。

如有任何帮助,我将不胜感激!谢谢!

您需要使用原始 .java 文件和指定的 POI jar 实际编译 jar。

javac -cp \path_to_jars \path_to_java_files

然后

java MyProject

我从之前的 answer of Whosebug 中找到了答案。我必须在末尾添加一个“*”和一个“.”。在分号之后。因此,对于我的示例,在编译方面,我必须这样做:

javac -cp C:\Users\rperera\IdeaProjects\LinkingNames\libs\*;. C:\Users\rperera\IdeaProjects\LinkingNames\src\HyperlinkWriter.java

然后 运行 它(归功于@andrewdleach),我刚刚做了:

java HyperlinkWriter