CCH*_*HET 17 java eclipse annotation-processing
我有一个注释处理器,它将生成一个枚举,其中包含由接口的getter方法定义的键.
界面位于
MyProject的/ src目录/主/ JAVA/my.package.MyInterfaces.java.
我想验证驻留的属性文件,MyProject/src/main/resources/META-INF/resource-bundle/如果它们确实包含生成的枚举中定义的键.
我的问题是属性文件不能通过处理器的类加载器或Filer.getResource(...)获得.
如何使该项目的源或类路径可供处理器使用,以便我可以加载属性文件?
现在我只有处理器所在的jar中的资源可用.我尝试通过eclipse Project/Properties/Java编译器/ Annotation处理/处理器选项来定义-classpath和/或-sourcepath,但它没有成功.
有没有人遇到这样的问题,谁能给我一个关于如何为处理器提供资源的线索?
我确实有maven结构但不使用maven,因为应用程序中的旧依赖项.所以maven现在不适合我.
Eclipse 3.6 Helios似乎
StandardLocation.SOURCE_PATH并且StandardLocation.CLASS_PATH没有在Filer#getResource()中实现,因此将生成的源文件或类文件写入SOURCE_PATH或CLASS_PATH似乎不可能,同时访问任何文件SOURCE_PATH和CLASS_PATH*
谢谢.
Gra*_*ray -1
我的问题是属性文件无法通过处理器的类加载器或通过
Filer.getResource(...).
我不确定我是否理解你的问题。但也许这里的一些东西会有帮助。
如何使该项目的源或类路径可供处理器使用,以便我可以加载属性文件?
您需要将其添加src/main/resources为 Eclipse 中的“源文件夹”。Configure Build Path首先在 Eclipse 中选择您的 Java 项目。然后选择选项Source卡并单击Add Folder。您应该能够选择该src/main/resources文件夹并单击Ok。您现在应该src/main/resources在源文件夹列表中看到 。
如果您查看target/classes目录,您应该会看到资源目录中的所有文件,这让您知道它们已正确复制到类路径中。
# files in the src main resources
> ls src/main/resources/x/y/z
jgroups_udp.xml
# should compile into target/classes
> ls target/classes/x/y/z
jgroups_udp.xml org
# and should show up in the jar
> -tvf target/project.jar
0 Thu Nov 03 18:50:00 EDT 2016 META-INF/
135 Thu Nov 03 18:49:58 EDT 2016 META-INF/MANIFEST.MF
...
3036 Thu Nov 03 18:49:36 EDT 2016 x/y/z/jgroups_udp.xml
Run Code Online (Sandbox Code Playgroud)
然后,您可以在代码中通过执行以下操作来引用该文件。这将从类路径的顶部加载文件。如果它位于子目录中,那么您可以使用:
InputStream stream =
getClass().getClassLoader().getResourceAsStream("x/y/z/jgroups_udp.xml");
Run Code Online (Sandbox Code Playgroud)
顺便说一句,如果您使用Maven,您将添加如下内容pom.xml:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2325 次 |
| 最近记录: |