--precompile标志应该做什么?

dot_Sp0T

我正在使用Spoon在带注释的类上生成代码,因此可以减少正在处理的项目的样板和代码重复。

由于该项目非常小,因此我一直在寻找方法,因此不必将整个项目拆分为两个甚至三个不同的项目,这些项目必须先进行编译才能在AnnotationProcessor中使用。

通过查看Spoon文档,我发现了该--precompile标志,据我所知,它应该预编译整个源并将其添加到类路径中,以便Spoon在运行时可以找到处理器和其他内容。

但是根据我在运行它时遇到的错误,它似乎不起作用,即使添加了该选项,我仍然缺少处理器。


[INFO] --- exec-maven-plugin:1.5.0:java (execute-spoon) @ JHTML5 ---
12:29:50.454 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - output: spooned
12:29:50.456 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - destination: C:\Data\CrumbleWorks_java\JHTML5\spooned-classes
12:29:50.457 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - source classpath: null
12:29:50.457 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - template classpath: []
12:29:50.466 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - output: spooned
12:29:50.466 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - destination: C:\Data\CrumbleWorks_java\JHTML5\spooned-classes
12:29:50.466 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - source classpath: null
12:29:50.467 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - template classpath: []
12:29:50.467 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - compiling sources: []
12:29:50.539 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - compile args: [-encoding, UTF-8, -cp, .;/C:/Data/CrumbleWorks_java/JHTML5/target/classes;/C:/Data/Maven/repo/fr/inria/gforge/spoon/spoon-core/5.4.0/spoon-core-5.4.0.jar;/C:/Data/Maven/repo/org/eclipse/jdt/org.eclipse.jdt.core/3.12.0.v20160516-2131/org.eclipse.jdt.core-3.12.0.v20160516-2131.jar;/C:/Data/Maven/repo/com/martiansoftware/jsap/2.1/jsap-2.1.jar;/C:/Data/Maven/repo/commons-io/commons-io/1.4/commons-io-1.4.jar;/C:/Data/Maven/repo/org/slf4j/log4j-over-slf4j/1.7.21/log4j-over-slf4j-1.7.21.jar;/C:/Data/Maven/repo/ch/qos/logback/logback-classic/1.1.7/logback-classic-1.1.7.jar;/C:/Data/Maven/repo/ch/qos/logback/logback-core/1.1.7/logback-core-1.1.7.jar;/C:/Data/Maven/repo/org/crumbleworks/forge/crumbutil/crumbutil/0.1.0/crumbutil-0.1.0.jar;/C:/Data/Maven/repo/org/slf4j/slf4j-api/1.7.21/slf4j-api-1.7.21.jar, -d, C:\Data\CrumbleWorks_java\JHTML5\spooned-classes, -1.8, -proc:none, -preserveAllLocals, -noExit, -enableJavadoc, .]
12:29:50.790 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - compiled in 323 ms
12:29:50.792 [spoon.Launcher.main()] INFO spoon.support.StandardEnvironment - Spoon version 5.4.0
12:29:50.792 [spoon.Launcher.main()] INFO spoon.support.StandardEnvironment - running Spoon...
12:29:50.792 [spoon.Launcher.main()] INFO spoon.support.StandardEnvironment - start processing...
12:29:50.792 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - building sources: []
12:29:50.792 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - built in 0 ms
12:29:50.792 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - building templates: []
12:29:50.792 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - built in 0 ms
12:29:50.793 [spoon.Launcher.main()] DEBUG spoon.support.StandardEnvironment - model built in 1
[WARNING]
java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:294)
        at java.lang.Thread.run(Thread.java:745)
Caused by: spoon.SpoonException: Unable to load processor "org.crumbleworks.forge.jhtml5.spoon.AttributeProcessor" - Check your classpath. Did you use the --precompile option?
        at spoon.support.QueueProcessingManager.addProcessor(QueueProcessingManager.java:79)
        at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.instantiateAndProcess(JDTBasedSpoonCompiler.java:169)
        at spoon.Launcher.process(Launcher.java:719)
        at spoon.Launcher.run(Launcher.java:665)
        at spoon.Launcher.run(Launcher.java:106)
        at spoon.Launcher.main(Launcher.java:99)
        ... 6 more
Caused by: java.lang.ClassNotFoundException: org.crumbleworks.forge.jhtml5.spoon.AttributeProcessor
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at spoon.support.QueueProcessingManager.addProcessor(QueueProcessingManager.java:77)
        ... 11 more
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.202 s
[INFO] Finished at: 2016-10-31T12:29:50+01:00
[INFO] Final Memory: 14M/284M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.5.0:java (execute-spoon) on project JHTML5: An exception occured while executing the Java class. null: InvocationTargetException: Unable to load processor "org.crumbleworks.forge.jhtml5.spoon.AttributeProcessor" - Check your classpath. Did you use the --precompile option? -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

完整的Maven错误输出

line,这句话让我感到困惑。

Caused by: spoon.SpoonException: Unable to load processor "org.crumbleworks.forge.jhtml5.spoon.AttributeProcessor" - Check your classpath. Did you use the --precompile option?

...是的,我确实使用了--precompile选项。谢谢你的慰问


<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>${exec-plugin.version}</version>
    <executions>
        <execution>
            <id>execute-spoon</id>
            <phase>process-sources</phase>
            <goals>
                <goal>java</goal>
            </goals>
            <configuration>
                <classpathScope>compile</classpathScope>
                <mainClass>spoon.Launcher</mainClass>
                <arguments>
                    <argument>--with-imports</argument>
                    <argument>--processors</argument>
                    <argument>org.crumbleworks.forge.jhtml5.spoon.AttributeProcessor</argument>
                    <argument>--enable-comments</argument>
                    <argument>--precompile</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

使用exec-maven-plugin(执行任何Java可执行文件)运行Maven插件声明


因此:-- precompile标志应该做什么?
我分别在做什么错?


编辑
这是一个简化的示例,其中包含一个maven-pom和一个自述文件,描述了如何在不使用maven的情况下运行和显示:https : //github.com/CrumbleWorks/Spoon-Precompile-Issue

马丁·蒙珀鲁斯

--precompile选项编译作为输入提供的源代码,以便对于所有CtTypeReference对象,都可以使用获取实际的类getActualClass()此外,它还支持getActualClass()任何功能CtType

(这允许在相同的分析或转换中将Spoon的反射与Java的反射混合在一起)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ASCII字符26应该做什么?

来自分类Dev

git diff origin master应该做什么?

来自分类Dev

RESETING分离头HEAD应该做什么?

来自分类Dev

Android相机:线程?哪个应该做什么

来自分类Dev

自动保存属性应该做什么?如何使用?

来自分类Dev

netbeans中的Watch进程选项应该做什么?

来自分类Dev

'{default:'1}在系统Verilog中应该做什么?

来自分类Dev

Material-UI中的notched属性应该做什么

来自分类Dev

git diff origin master应该做什么?

来自分类Dev

自动保存属性应该做什么?如何使用?

来自分类Dev

Vis.js中的“ horizontalScroll”选项应该做什么?

来自分类Dev

Prolog程序,这个程序应该做什么?

来自分类Dev

ESP.restart() 在 NodeMCU 中究竟应该做什么?

来自分类Dev

交叉验证后我应该做什么?

来自分类Dev

.zshenv,.zshrc,.zlogin,.zprofile,.zlogout应该/不应该做什么?

来自分类Dev

什么是aw | 用grep和-sort剪切-d“” -f 1-应该做什么?

来自分类Dev

在webrtc回调“-(void)peerConnectionOnRenegotiationNeeded:(RTCPeerConnection *)peerConnection”中应该做什么?

来自分类Dev

交互式外壳在孤立的流程组中应该做什么?

来自分类Dev

多个线程访问的队列的推荐模式...工作线程应该做什么?

来自分类Dev

处置应该做什么-仅清除资源或执行一些“业务逻辑”?

来自分类Dev

在一个类中,“使用Base :: BaseOfBase;”应该做什么?

来自分类Dev

首先应该做什么:自动的xgboost模型参数调整(Hyperopt)或功能选择(boruta)

来自分类Dev

交互式外壳在孤立的流程组中应该做什么?

来自分类Dev

具有移动语义的RAII类中的默认构造函数应该做什么?

来自分类Dev

我不知道该功能应该做什么

来自分类Dev

处置应该做什么-仅清理资源或执行一些“业务逻辑”?

来自分类Dev

您能帮我弄清楚这段Java代码片段应该做什么吗?

来自分类Dev

PHP-迭代器隐藏地图,`valid`应该做什么?

来自分类Dev

Debian的/etc/init.d/umountfs中的sed命令应该做什么?

Related 相关文章

  1. 1

    ASCII字符26应该做什么?

  2. 2

    git diff origin master应该做什么?

  3. 3

    RESETING分离头HEAD应该做什么?

  4. 4

    Android相机:线程?哪个应该做什么

  5. 5

    自动保存属性应该做什么?如何使用?

  6. 6

    netbeans中的Watch进程选项应该做什么?

  7. 7

    '{default:'1}在系统Verilog中应该做什么?

  8. 8

    Material-UI中的notched属性应该做什么

  9. 9

    git diff origin master应该做什么?

  10. 10

    自动保存属性应该做什么?如何使用?

  11. 11

    Vis.js中的“ horizontalScroll”选项应该做什么?

  12. 12

    Prolog程序,这个程序应该做什么?

  13. 13

    ESP.restart() 在 NodeMCU 中究竟应该做什么?

  14. 14

    交叉验证后我应该做什么?

  15. 15

    .zshenv,.zshrc,.zlogin,.zprofile,.zlogout应该/不应该做什么?

  16. 16

    什么是aw | 用grep和-sort剪切-d“” -f 1-应该做什么?

  17. 17

    在webrtc回调“-(void)peerConnectionOnRenegotiationNeeded:(RTCPeerConnection *)peerConnection”中应该做什么?

  18. 18

    交互式外壳在孤立的流程组中应该做什么?

  19. 19

    多个线程访问的队列的推荐模式...工作线程应该做什么?

  20. 20

    处置应该做什么-仅清除资源或执行一些“业务逻辑”?

  21. 21

    在一个类中,“使用Base :: BaseOfBase;”应该做什么?

  22. 22

    首先应该做什么:自动的xgboost模型参数调整(Hyperopt)或功能选择(boruta)

  23. 23

    交互式外壳在孤立的流程组中应该做什么?

  24. 24

    具有移动语义的RAII类中的默认构造函数应该做什么?

  25. 25

    我不知道该功能应该做什么

  26. 26

    处置应该做什么-仅清理资源或执行一些“业务逻辑”?

  27. 27

    您能帮我弄清楚这段Java代码片段应该做什么吗?

  28. 28

    PHP-迭代器隐藏地图,`valid`应该做什么?

  29. 29

    Debian的/etc/init.d/umountfs中的sed命令应该做什么?

热门标签

归档