2015-01-02 2 views
6

Я использую eclipse для разработки ExtJS, Я использую ant build in eclipse, он использует Sencha cmd. Мои данные проекта являютсяОшибка сборки сборки ExtJS 5.1 (ошибка Yui Parse)

app.framework.version = 5.1.0.107

app.cmd.version = 5.1.0.26

, когда я пытаюсь построить проект, он терпит неудачу с ошибками Yui Parse, но Я не смог найти ошибку в моей рабочей области. Можете ли вы объяснить сообщение о трассировке стека?

page: 
-before-page: 
-init: 
-init-compiler: 
-copy-app-resources: 
[x-compile] Copying page resources to D:\Users\admin\workspaceKepler\Propca\WebContent\build\production\Propca 
[x-compile] C2009: YUI Parse Error (missing name after . operator => if (!Propca.view.abstract) Propca.view.abstract = {};) -- unknown-file:143:26 
[x-compile] C2009: YUI Parse Error (missing name after . operator =>  Propca.view.abstract,) -- unknown-file:197633:25 
[x-compile] C2009: YUI Parse Error (syntax error => ], 0));) -- unknown-file:197635:1 
[x-compile] C2009: YUI Parse Error (missing name after . operator =>  Propca.view.abstract,) -- unknown-file:197657:25 
[x-compile] C2009: YUI Parse Error (syntax error => ], 0));) -- unknown-file:197659:1 
[x-compile] C2009: YUI Parse Error (missing name after . operator => (Ext.cmd.derive('Propca.view.querybuilder.QueryBuilder', Propca.view.abstract.PRPanel, {) -- unknown-file:197661:78 
[x-compile] C2009: YUI Parse Error (syntax error =>   items: [) -- unknown-file:197679:15 
[x-compile] C2009: YUI Parse Error (missing ; before statement =>     itemId: 'idbtnValidateSqlScript',) -- unknown-file:197682:24 
[x-compile] C2009: YUI Parse Error (syntax error =>     bodypadding: '30',) -- unknown-file:197683:29 
[x-compile] C2009: YUI Parse Error (syntax error =>     height: 30,) -- unknown-file:197684:24 
[x-compile] InvocationTargetException: java.lang.reflect.InvocationTargetException 

BUILD FAILED 
com.sencha.exceptions.ExBuild: Failed to compress input 
    at com.sencha.tools.compressors.yui.YuiJavascriptCompressor.runYuiCompressor(YuiJavascriptCompressor.java:85) 
    at com.sencha.tools.compressors.yui.YuiJavascriptCompressor.compress(YuiJavascriptCompressor.java:96) 
    at com.sencha.tools.compressors.yui.YuiJavascriptCompressor.compress(YuiJavascriptCompressor.java:106) 
    at com.sencha.tools.page.PageModelBuilder.compressAsset(PageModelBuilder.java:413) 
    at com.sencha.tools.page.PageModelBuilder.copyResourcesToOutputDirectory(PageModelBuilder.java:398) 
    at com.sencha.command.compile.app.AppResourcesCommand.execute(AppResourcesCommand.java:61) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.sencha.util.MethodInvoker$Arguments.invoke(MethodInvoker.java:175) 
    at com.sencha.cli.Command.dispatch(Command.java:43) 
    at com.sencha.cli.Commands.dispatch(Commands.java:64) 
    at com.sencha.command.compile.CompileCommands.dispatch(CompileCommands.java:308) 
    at com.sencha.cli.AbstractCommand.dispatch(AbstractCommand.java:124) 
    at com.sencha.ant.CompileTask$CompileToken.dispatchCommand(CompileTask.java:164) 
    at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) 
    at org.eclipse.ant.internal.launching.remote.EclipseSingleCheckExecutor.executeTargets(EclipseSingleCheckExecutor.java:30) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1251) 
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.run(InternalAntRunner.java:424) 
    at org.eclipse.ant.internal.launching.remote.InternalAntRunner.main(InternalAntRunner.java:138) 
Caused by: com.sencha.exceptions.ExReflect: java.lang.reflect.InvocationTargetException 
    at com.sencha.util.ReflectionUtil.newInstance(ReflectionUtil.java:116) 
    at com.sencha.tools.compressors.yui.YuiJavascriptCompressor.runYuiCompressor(YuiJavascriptCompressor.java:58) 
    ... 48 more 
Caused by: java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Unknown Source) 
    at com.sencha.util.ReflectionUtil.newInstance(ReflectionUtil.java:114) 
    ... 49 more 
Caused by: org.mozilla.javascript.EvaluatorException: Compilation produced 379 syntax errors. 
    at org.mozilla.javascript.DefaultErrorReporter.runtimeError(DefaultErrorReporter.java:109) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at com.sencha.tools.compressors.yui.BaseYuiCompressor$1.invoke(BaseYuiCompressor.java:135) 
    at com.sun.proxy.$Proxy9.runtimeError(Unknown Source) 
    at org.mozilla.javascript.Parser.parse(Parser.java:392) 
    at org.mozilla.javascript.Parser.parse(Parser.java:337) 
    at com.yahoo.platform.yui.compressor.JavaScriptCompressor.parse(JavaScriptCompressor.java:312) 
    at com.yahoo.platform.yui.compressor.JavaScriptCompressor.<init>(JavaScriptCompressor.java:533) 
    ... 54 more 

Total time: 1 minute 15 seconds 

ответ

12

Я собираюсь выйти на конечность и предположить, что это потому, что вы используете reserved word в своем названии. Хотя обычно это «okay» в javascript, и ваше приложение ExtJS работает в режиме разработки, я обнаружил, что при минировании YUI дроссели по этим ключевым словам.

Самый простой (и, вероятно, целесообразно) вариант, только чтобы избежать зарезервированные ключевые слова и имя абстрактную что-то еще, abstractObj, например. Если вы хотите, чтобы заставить эту проблему, вы могли бы вместо этого:

if(!Propca.view.abstract) // ... 

... попробуйте обозначение доступа к массиву:

if(!Propca.view['abstract']) // ... 

... или в частном случае if заявления в сообщение об ошибке, то in оператор:

if(!('abstract' in Propca.view)) // ... 

В этих случаях (и любых других, вы можете иметь) доступ к Prope rty с ключевым словом как строка, похоже, удовлетворяет компилятору - хотя он нарушает соглашение и не выглядит очень аккуратным, поэтому, возможно, его не стоит ...

+0

Да, я изменил имя папки на prAbstract и изменил обновление все строки в моем коде, которые используют мои абстрактные классы, чем проблема исправлена. Спасибо – AsyncTask

+0

У меня была почти такая же проблема с именем класса 'case' – weeksdev

3

У вас есть синтаксическая ошибка в вашем JavaScript; когда он объединяется в один файл, компрессор YUI не может справиться с ним и barfs.

К сожалению, ExtJS не имеет хороших инструментов для выявления ошибок в отдельных файлах. Вы можете попробовать другой инструмент (я использую jshint, например, как задачу перед сборкой Ant), или вы можете просто посмотреть на файлы, которые изменились с тех пор, как вы в последний раз сделали успешную сборку и сузили ее таким образом.

Смежные вопросы