java.lang.NoSuchFieldError: instance exception using yuicompressor to minify JS files
java.lang.NoSuchFieldError: instance exception using yuicompressor to minify JS files
我们正在将应用服务器从 Weblogic 11g 运行 java 1.6 升级到 Weblogic 12c 运行 java 1.8。我们的 ANT 构建过程中的一个步骤是使用 YUI Compressor(版本 2.4.8)来缩小我们的 CSS 和 JS 文件。缩小 CSS 文件的步骤工作正常。但是当我们尝试缩小 JS 文件时,我们得到以下错误:
java.lang.NoSuchFieldError: instance
at org.mozilla.javascript.CompilerEnvirons.<init>(CompilerEnvirons.java:48)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:310)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:533)
at com.yahoo.platform.yui.compressor.YUICompressTask.doCompression(YUICompressTask.java:202)
at com.yahoo.platform.yui.compressor.YUICompressTask.execute(YUICompressTask.java:101)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.apache.tools.ant.Main.runBuild(Main.java:758)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
当我查看 yuicompressor-2.4.8.jar 中的 classes 导致错误时,我看到 CompilerEnvirons.java 的第 48 行看起来像这样:
this.errorReporter = DefaultErrorReporter.instance;
但是当我检查 class DefaultErrorReporter.java 时,它是空的。整个class包括以下内容:
class
{
}
Java 1.6 似乎不关心这个但是 java 1.8 关心这个。
无论如何我都不是这个压缩器工具的专家,所以我想知道是否有人对可能导致此问题的原因有任何想法。如果我需要提供更多信息,我很乐意提供。
谢谢。
这原来是一个损坏的 JAR 文件。
我们正在将应用服务器从 Weblogic 11g 运行 java 1.6 升级到 Weblogic 12c 运行 java 1.8。我们的 ANT 构建过程中的一个步骤是使用 YUI Compressor(版本 2.4.8)来缩小我们的 CSS 和 JS 文件。缩小 CSS 文件的步骤工作正常。但是当我们尝试缩小 JS 文件时,我们得到以下错误:
java.lang.NoSuchFieldError: instance
at org.mozilla.javascript.CompilerEnvirons.<init>(CompilerEnvirons.java:48)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:310)
at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:533)
at com.yahoo.platform.yui.compressor.YUICompressTask.doCompression(YUICompressTask.java:202)
at com.yahoo.platform.yui.compressor.YUICompressTask.execute(YUICompressTask.java:101)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
at org.apache.tools.ant.Project.executeTarget(Project.java:1306)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1189)
at org.apache.tools.ant.Main.runBuild(Main.java:758)
at org.apache.tools.ant.Main.startAnt(Main.java:217)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
当我查看 yuicompressor-2.4.8.jar 中的 classes 导致错误时,我看到 CompilerEnvirons.java 的第 48 行看起来像这样:
this.errorReporter = DefaultErrorReporter.instance;
但是当我检查 class DefaultErrorReporter.java 时,它是空的。整个class包括以下内容:
class
{
}
Java 1.6 似乎不关心这个但是 java 1.8 关心这个。
无论如何我都不是这个压缩器工具的专家,所以我想知道是否有人对可能导致此问题的原因有任何想法。如果我需要提供更多信息,我很乐意提供。
谢谢。
这原来是一个损坏的 JAR 文件。