谷歌闭包在没有通过使用IKVM的情况下工作得很好
如果这种情况消失,将其转换为exe的简化步骤是:
ikvmc -target:exe -fileversion:2012.09.17 .\compiler.jar (带有jar的发布日期)。注意:我收到了一些关于ANT库的警告。
然后,您可以将compiler.jar和新compiler.exe移回闭包目录。Fredrik推荐这个powershell版本的执行,因为它能够指定ascii编码覆盖unicode (字节的一半):
.\compiler.exe --js .\jquery-1.4.2.js --warning_level QUIET | out-file -encoding ascii .\jquery.min.js==============================
但是,对于闭包模板的SoyToJsSrcCompiler.jar,我没有同样的运气。我收到来自ikvmc -target:exe -fileversion:2011.12.22 .\SoyToJsSrcCompiler.jar和compiler.jar的警告。
warning IKVMC0105: Unable to compile class "com.google.template.soy.jssrc.internal.GenerateSoyUtilsEscapingDirectiveCode"
(missing class "org.apache.tools.ant.Task")
warning IKVMC0100: Class "com.google.inject.internal.asm.util.$TraceClassVisitor" not found
warning IKVMC0111: Emitted java.lang.NoClassDefFoundError in "com.google.inject.internal.cglib.core.$DebuggingClassWriter$1.run()Ljava.lang.Object;"
("com.google.inject.internal.asm.util.$TraceClassVisitor")
warning IKVMC0100: Class "com.google.template.soy.jssrc.internal.GenerateSoyUtilsEscapingDirectiveCode" not found生成的没有命令行参数的SoyToJsSrcCompiler.exe可以显示帮助页,但是提供一个.soy文件可以提供:
Exception in thread "main" cli.System.MethodAccessException:
com.google.inject.assistedinject.FactoryProvider2.getBindingFromNewInjector(java.lang.reflect.Method, System.Object[], AssistData) at
com.google.inject.assistedinject.FactoryProvider2$$FastClassByGuice$$9dcdf6d7.invoke() at
com.google.inject.internal.cglib.reflect.$FastMethod.invoke(FastMethod.java:53) at
com.google.inject.internal.SingleMethodInjector$1.invoke(SingleMethodInjector.java:56) at
com.google.inject.internal.SingleMethodInjector.inject(SingleMethodInjector.java:90) at
com.google.inject.internal.MembersInjectorImpl.injectMembers(MembersInjectorImpl.java:107) at
com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:76) at
com.google.inject.internal.MembersInjectorImpl$1.call(MembersInjectorImpl.java:73) at
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1031) at
com.google.inject.internal.MembersInjectorImpl.injectAndNotify(MembersInjectorImpl.java:88) at
com.google.inject.internal.Initializer$InjectableReference.get(Initializer.java:150) at
com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:40) at
com.google.inject.internal.SingleFieldInjector.inject(SingleFieldInjector.java:53) at
com.google.inject.internal.InjectionRequestProcessor$StaticInjection$1.call(InjectionRequestProcessor.java:11 6) at
com.google.inject.internal.InjectionRequestProcessor$StaticInjection$1.call(InjectionRequestProcessor.java:11 0) at
com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1024) at
com.google.inject.internal.InjectionRequestProcessor$StaticInjection.injectMembers(InjectionRequestProcessor. java:110) at
com.google.inject.internal.InjectionRequestProcessor.injectMembers(InjectionRequestProcessor.java:78) at
com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:171) at
com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:111) at
com.google.inject.Guice.createInjector(Guice.java:95) at
com.google.inject.Guice.createInjector(Guice.java:72) at
com.google.template.soy.MainClassUtils.createInjector(MainClassUtils.java:212) at
com.google.template.soy.SoyToJsSrcCompiler.execMain(SoyToJsSrcCompiler.java:223) at
com.google.template.soy.SoyToJsSrcCompiler.main(SoyToJsSrcCompiler.java:205)有人知道怎么让这件事起作用吗?
发布于 2012-10-11 17:19:57
例外可能是IKVM中的一个bug。你用哪种版本?测试最新版本。
警告"com.google.template.soy.jssrc.internal.GenerateSoyUtilsEscapingDirectiveCode“:未找到类IKVMC0100
另一个问题可能是您还没有编译SoyToJsSrcCompiler.jar所需的所有jar文件。这个缺少的类文件在哪个jar文件中?在维基中查看一下如何编译多个jar文件。
下一个问题可能是在不同的jar文件中有相同的包。它只对某些方法可见包,这对.NET不起作用。您可以测试sharedclassloader。有关细节,请参阅维基。
https://stackoverflow.com/questions/12842259
复制相似问题