正如标题所说,我正在尝试在命令提示符中运行一个使用Apache POI库的类,但是当我运行此命令时:
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$1.run(Unknown Source)
at java.net.URLClassLoader$1.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处理库的方式不同但我不确定为什么会发生这种情况。
我将不胜感激任何帮助!谢谢!
答案 0 :(得分:1)
您需要使用原始.java文件和指定的POI jar实际编译jar。
javac -cp \path_to_jars \path_to_java_files
然后
java MyProject
答案 1 :(得分:1)
我找到了之前answer of StackOverflow的答案。我不得不添加一个' *'到最后,一个'。'分号后。所以在我的例子中,在编译方面,我必须这样做:
javac -cp C:\Users\rperera\IdeaProjects\LinkingNames\libs\*;. C:\Users\rperera\IdeaProjects\LinkingNames\src\HyperlinkWriter.java
然后运行它(感谢@andrewdleach),我刚刚做了:
java HyperlinkWriter