使用 jar 文件编译和 运行 java
compile and run java with jar files
我正在尝试编译一个使用多个 jar 文件作为导入的 java 文件。
我用来编译代码的命令:
javac -cp jackson-databind-2.12.1.jar:jackson-core-2.12.1.jar:jackson-annotations-2.12.1.jar TestRunner.java
因此创建了两个 .class 文件:TestRunner.class 和 TestRunner$1.class
然后我 运行 命令:
java TestRunner
但它会抛出一个错误:
Error: Unable to initialize main class TestRunner Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/type/TypeReference
我已经在 javac 命令中包含了所有必需的库,并使用 IDE 对其进行了测试,它工作正常。
我已经尝试了其他版本的 jackson 库,但我仍然遇到同样的错误。
您需要在 运行 您的代码时指定 class 路径,方法是使用您在编译时使用的相同 -cp
args,加上您编译的文件夹 class 在.
在你的 cas 中,这意味着 java -cp .:jackson-databind-2.12.1.jar:jackson-core-2.12.1.jar:jackson-annotations-2.12.1.jar TestRunner
您指定的库未包含在生成的 .class
文件中,因此 Java 仍然需要它们了解如何调用不是来自您的 class 文件的代码。
我正在尝试编译一个使用多个 jar 文件作为导入的 java 文件。 我用来编译代码的命令:
javac -cp jackson-databind-2.12.1.jar:jackson-core-2.12.1.jar:jackson-annotations-2.12.1.jar TestRunner.java
因此创建了两个 .class 文件:TestRunner.class 和 TestRunner$1.class
然后我 运行 命令:
java TestRunner
但它会抛出一个错误:
Error: Unable to initialize main class TestRunner Caused by: java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/type/TypeReference
我已经在 javac 命令中包含了所有必需的库,并使用 IDE 对其进行了测试,它工作正常。 我已经尝试了其他版本的 jackson 库,但我仍然遇到同样的错误。
您需要在 运行 您的代码时指定 class 路径,方法是使用您在编译时使用的相同 -cp
args,加上您编译的文件夹 class 在.
在你的 cas 中,这意味着 java -cp .:jackson-databind-2.12.1.jar:jackson-core-2.12.1.jar:jackson-annotations-2.12.1.jar TestRunner
您指定的库未包含在生成的 .class
文件中,因此 Java 仍然需要它们了解如何调用不是来自您的 class 文件的代码。