Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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_Resources_Compile Time - Fatal编程技术网

在编译时验证Java JAR的资源文件

在编译时验证Java JAR的资源文件,java,resources,compile-time,Java,Resources,Compile Time,有没有办法在编译时验证源代码中引用的资源是否包含在输出JAR中 我正在创建一个包含多个png的javajar文件。我这样加载它们: ImageIcon imageIcon = new ImageIcon(MyClass.class.getResource("/path/to/resource.png"); 目前,在运行时出现异常之前,我不会发现丢失的资源。我不希望在构建脚本中有一个静态的资源列表,我希望编译器找出我在代码中使用的资源,并检查它们是否存在。事实上,仅在运行时查找路径中的错误似乎是

有没有办法在编译时验证源代码中引用的资源是否包含在输出JAR中

我正在创建一个包含多个png的javajar文件。我这样加载它们:

ImageIcon imageIcon = new ImageIcon(MyClass.class.getResource("/path/to/resource.png");

目前,在运行时出现异常之前,我不会发现丢失的资源。我不希望在构建脚本中有一个静态的资源列表,我希望编译器找出我在代码中使用的资源,并检查它们是否存在。

事实上,仅在运行时查找路径中的错误似乎是浪费时间

另一件事是,在移动文件之后,由于某些原因,资源可能无法立即在.jar中看到。我需要做一些魔术,然后他们才能看到重建项目,重新创建罐子

这个想法可以是在编译之前根据文件系统生成一个java类,例如ResourceManager,其中包含常量

然后使用它们访问资源:

比如:

ResourceManager.GET\u CUSTOMER\u SQL\u路径


你觉得怎么样?

那是不可能的。这只是一个作为参数传递给方法的字符串文字。有一些像ProGuard这样的工具可以进行复杂的类文件分析。当然有可能对资源执行类似的操作?但在编译时使用javac是不行的。