java - 运行时的 ClassNotFoundException
问题描述
我是 Java 新手,我对 Java 应用程序有疑问。
我用 Ant 构建了一个应用程序,当我尝试运行应用程序时java -jar appName.jar
出现错误ClassNotFoundException
。
问题是在主类中我导入了这样的库:
import de.SigX.Configuration.IniFile;
import de.signotec.STPad.api.SigPadApi;
import de.signotec.STPad.api.SigPadDevice;
import de.signotec.STPad.api.SigPadFacade;
import de.signotec.STPad.api.exceptions.SigPadApiException;
异常仅在
de.signotec.STPad.api.exceptions.SigPadApiException
有谁知道为什么?
编辑:
Build.xml 结构:
-<project basedir="." default="default" name="Test">
<description>Builds, tests, and runs the project Test.</description>
<import file="nbproject/build-impl.xml"/>
-<target name="-post-jar">
<copy file="lib\libSTPadJava.so" todir="${dist.dir}\lib"/>
<copy file="lib\libSTPadJava64.so" todir="${dist.dir}\lib"/>
<copy file="lib\STPadJava64.dll" todir="${dist.dir}\lib"/>
<copy file="lib\STPadJava.dll" todir="${dist.dir}\lib"/>
<copy file="log4j2.json" todir="${dist.dir}"/>
<copy file="lib\property.ini" todir="${dist.dir}\lib"/>
</target>
</project>
解决方案
“import”关键字不会将库导入或添加到运行时。它只是一个类导入,它有助于在不提供完全限定名称的情况下引用一个类。它只会在编译时使用。当您通过 jar 文件运行 java 应用程序时,所有依赖项(jar)都应通过 -classpath 或 -cp 指向,或者您应该将所有这些类嵌入到主 jar 文件中。
推荐阅读
- amazon-web-services - 假设我是 AWS IAM 用户,有什么方法可以让我使用 CLI 或控制台检查已授予我哪些资源权限
- python-3.x - 为什么 hyperopt 在随机森林中运行时会给出最好的损失 Nan?
- ruby-on-rails - AWS:Ruby describe_instance_type_offerings() 给出异常:“未定义的方法”
- vue.js - Vue Router Meta 对象未定义
- c++ - 扩展/专业化`模板
zero()` 到可调用的 `T` - flutter - 使用 PageView、Swiper 或 Liquid_swiper 时是否可以禁用页面?
- python - R 和 Python 中的列向量
- django - Django - 查询集中两个特定字段的划分
- java - 如何使用 Java API 根据多个字段对弹性搜索记录进行排序?
- mongodb - Meteor 助手不能按预期在模板上工作