Java 导入的jar可以完美编译,但会出现运行时错误

Java 导入的jar可以完美编译,但会出现运行时错误,java,android-studio,jar,compilation,Java,Android Studio,Jar,Compilation,我正在使用4个外部jar构建我的项目。我已经在我的项目中添加了这些库,我也可以在gradle.build文件中看到它们 当我进行梯度同步时,它会完美地编译代码,但一旦启动,它就会给我一个错误 Cannot find symbol <classname from the imported jar> 找不到符号 这是发生在只有一个罐子和所有其他工作正常 注意:jar确实包含该文件 我想问它是否正确编译,那么为什么它在启动时给我一个错误?因为jar在编译时在类路径上,而不是在运行时。我

我正在使用4个外部jar构建我的项目。我已经在我的项目中添加了这些库,我也可以在gradle.build文件中看到它们

当我进行梯度同步时,它会完美地编译代码,但一旦启动,它就会给我一个错误

Cannot find symbol <classname from the imported jar>
找不到符号
这是发生在只有一个罐子和所有其他工作正常

注意:jar确实包含该文件


我想问它是否正确编译,那么为什么它在启动时给我一个错误?

因为jar在编译时在类路径上,而不是在运行时。

我找到了解决问题的方法。我使用的JAR与最低android api级别16不兼容,因此我将其更改为更高版本

奇怪的是,我只有在将其配置为maven存储库时才出现此错误。此外,如果您的jar与您可以使用的最低sdk级别不匹配,那么您也会面临同样的问题

tools:overrideLibrary
在AndroidManifest.xml中


谢谢

谢谢你的回答,但我关心的是,为什么其他3个罐子没有给我这个错误。没有更多信息,很难回答这个问题。也许您的程序还没有尝试访问其他3个JAR中的任何一个JAR中的类。最终,类未找到错误是因为在类路径上指定的任何位置都没有可用的.class文件。您知道JVM被调用的类路径实际上是什么吗?您可以编写一个测试程序,只输出java系统属性“java.class.path”的值。谢谢您的回答。但是我在课堂上用了另外三个罐子,它们都很好用。现在我唯一怀疑的是罐子本身。可能是它被破坏了。