首页 > 解决方案 > 运行时的 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> 

标签: javaant

解决方案


“import”关键字不会将库导入或添加到运行时。它只是一个类导入,它有助于在不提供完全限定名称的情况下引用一个类。它只会在编译时使用。当您通过 jar 文件运行 java 应用程序时,所有依赖项(jar)都应通过 -classpath 或 -cp 指向,或者您应该将所有这些类嵌入到主 jar 文件中。


推荐阅读