我有以下使用JAX-RS来使用api的类:
public class PackageProcessor implements IPackageProcessor {
public PackageProcessor() {
}
@Override
public PackageDimensions getPackageDimensions(byte[] image) throws PackageProcessorException {
Image imageBase64 = toBase64(image);
PackageDimensions dimensions = null;
try {
Client client = ClientBuilder.newClient();
dimensions = client.target(BASE_URI)
.path(DIMENSIONS_PATH)
.request(MediaType.APPLICATION_JSON)
.accept(MediaType.APPLICATION_JSON)
.post(Entity.json(imageBase64))
.readEntity(PackageDimensions.class);
} catch (WebApplicationException ex) {
throw new PackageProcessorException("Error al procesar la imagen", ex);
}
return dimensions;
}
}
我试图在Java应用程序中使用它只是为了测试它是否有效:
public static void main(String[] args) {
try {
IPackageProcessor p = new PackageProcessor();
Path path = Paths.get("path");
byte[] data = Files.readAllBytes(path);
PackageDimensions d = p.getPackageDimensions(data);
} catch (IOException ex) {
Logger.getLogger(Prueba.class.getName()).log(Level.SEVERE, null, ex);
} catch (PackageProcessorException ex) {
Logger.getLogger(Prueba.class.getName()).log(Level.SEVERE, null, ex);
}
}
但是,当我尝试运行此应用程序时,在执行new PackageProcessor()的行中出现以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/ws/rs/WebApplicationException
at prueba.Prueba.main(Prueba.java:25)
Caused by: java.lang.ClassNotFoundException: javax.ws.rs.WebApplicationException
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
我明白这是什么意思,但是我没有在构造函数中调用任何抛出该异常的东西,对吗?
我不想在我的Java应用程序中向JAX-RS添加依赖项,这就是我将可能的WebApplicationException封装在我自己的异常类PackageProcessorException 。 我认为就足够了。
我究竟做错了什么?
我正在使用Netbeans,如果那有什么改变
更新
感谢您的解释,这些解释似乎是正确的,但是如果是这样的话,我的Java应用程序将无法忽略PackageProcessor的实现吗?
那就是我所希望的。