类路径选项适用于 javac 但不适用于 java (Windows)

Classpath option works for javac but not for java (Windows)

您好,感谢阅读,

在通常使用 C# 之后,我昨天尝试编写一些 java 代码来处理 XML 文件。我没有使用 IDE 或任何东西,只是 Notepad++、SDK 和很多 Google :)

我需要包含一些我发现的 jar 文件,需要将类路径设置为命令行参数才能找到 jar 文件。效果很好:

javac -cp "./metadata-extractor-2.9.1.jar;./xmpcore-5.1.2.jar" DescribeIt.java

虽然在 运行 和 java.exe 时使用相同的语法,但我运气不太好:

java DescribeIt -cp "./metadata-extractor-2.9.1.jar;./xmpcore-5.1.2.jar" 

导致

Exception in thread "main" java.lang.NoClassDefFoundError: com/drewimaging/ImageMetadataReader at DescribeIt.main(DescribeIt.java:53)
Caused by: java.lang.ClassNotFoundException: com.drew.imaging.ImageMetadataReader
        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)
        ... 1 more

当我解压缩 jar 文件时,它工作得很好,但我想这不是 jar 文件应该使用的方式。

可以找到代码和构建批处理文件here

非常感谢,

弗洛

哎呀!问题是参数的顺序(并添加当前目录):

java -cp "metadata-extractor-2.9.1.jar;xmpcore-5.1.2.jar;." DescribeIt