Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 可以从类路径中排除带有注释的jar文件吗?_Java_Annotations_Classloader - Fatal编程技术网

Java 可以从类路径中排除带有注释的jar文件吗?

Java 可以从类路径中排除带有注释的jar文件吗?,java,annotations,classloader,Java,Annotations,Classloader,我们有一个大型java应用程序。我的一位同事现在正在使用这个应用程序作为jboss上RESTAPI的库。在这方面,我们必须向某些类中的某些方法添加@JsonIgnore注释。我必须在类中进行导入,如下所示: import org.codehaus.jackson.annotate.JsonIgnore; 此注释包含在jar文件jackson-core-asl-1.9.13.jar中 现在的问题是,我是否必须为所有使用该程序作为独立应用程序的客户提供jar文件?还是可以省略,因为它只是注释?这个

我们有一个大型java应用程序。我的一位同事现在正在使用这个应用程序作为jboss上RESTAPI的库。在这方面,我们必须向某些类中的某些方法添加@JsonIgnore注释。我必须在类中进行导入,如下所示:

import org.codehaus.jackson.annotate.JsonIgnore;
此注释包含在jar文件jackson-core-asl-1.9.13.jar中
现在的问题是,我是否必须为所有使用该程序作为独立应用程序的客户提供jar文件?还是可以省略,因为它只是注释?这个问题的简单答案是,我尝试将我的程序作为一个独立的程序运行,在类路径中没有jackson-core-asl-1.9.13.jar,而且它似乎工作得很好。但我真正想知道的是,它是否会一直做到这一点,不受正在运行的虚拟机的影响。如果Java更新导致应用程序失败,要么是因为方法上的注释,要么是因为缺少导入,结果将是灾难性的,因为我们有很多客户使用这个应用程序。那么类加载器是如何解决导入语句和注释的呢?

已经三年了,但我需要这个答案

根据JSR-175和Oracle的bug数据库,它应该可以工作。经过多次搜索,我在一份旧JRE的bug报告中发现了以下语句:

根据JSR-175规范负责人的说法,未知注释必须是 被getAnnotations忽略

以下是链接:


您似乎可以编译带有注释的类,如果注释在运行时不存在,则不会产生问题。

如果没有jar,您的类如何使用@JsonIgnore注释?注释是命名接口。你的测试一定是在转移注意力。。。如果您使用的是Maven,那么应用程序可能会通过传递方式引入依赖关系。正在构建应用程序的MyEclipse的类路径中有jackson-core-asl-1.9.13.jar文件。问题是,当没有jacksonjar文件的客户启动该文件时,这些生成的文件是否也必须具有访问该文件的权限。您使用的是Maven吗?运行mvn dependency:tree将显示类是否依赖于jar。如果应用程序类中有jackson注释,则需要jackson在运行时可用。。。不,我没有用Maven。我有jackson注释,但独立应用程序不需要/使用它们。有趣的是,如果没有jacksonjar文件,它似乎工作正常,getter被称为ok,没有任何错误。但我不知道我是否能一直相信它是这样的。很有趣。我通常在“web应用”中使用jackson,它用于对象编组。在这种情况下,我们必须在服务器上安装libs。