2009-11-05 102 views
1

當我嘗試構建一個使用Flex的項目,並且其中的Flex SDK是一個驅動器和項目文件上,我都會在螞蟻以下錯誤:的Flex Ant任務問題

[mxmlc] java.lang.NoClassDefFoundError: flex2/tools/Compiler 
[mxmlc] Exception in thread "main" 

這似乎是Flex mxmlc ant任務的問題。任何人都知道這個的根本原因?它的工作原理,如果我移動的Flex SDK到項目文件夾,但我不喜歡被hackish的那樣......

螞蟻在詳細模式下得到:

compile.main: 
dropping E:\c from path as it doesn't exist 
dropping E:\programs\flex-sdk\lib\mxmlc.jar from path as it doesn't exist 
    [mxmlc] java.lang.NoClassDefFoundError: flex2/tools/Compiler 
    [mxmlc] Exception in thread "main" 
    [antcall] Exiting E:\svn\trunk\dev\modules\web\webapps\lpjserver\lpjserver-build.xml. 

BUILD FAILED 
E:\svn\trunk\dev\modules\web\webapps\lpjserver\lpjserver-build.xml:379: The following error occurred while executing this line: 
E:\svn\trunk\dev\modules\web\webapps\lpjserver\lpjserver-build.xml:199: mxmlc task failed. 
    at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:508) 
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:418) 
    at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:585) 
    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) 
Caused by: E:\svn\trunk\dev\modules\web\webapps\lpjserver\lpjserver-build.xml:199: mxmlc task failed. 
    at flex.ant.FlexTask.executeOutOfProcess(FlexTask.java:253) 
    at flex.ant.FlexTask.execute(FlexTask.java:223) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:585) 
    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.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1189) 
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:416) 
    ... 17 more 
--- Nested Exception --- 
E:\svn\trunk\dev\modules\web\webapps\lpjserver\lpjserver-build.xml:199: mxmlc task failed. 
    at flex.ant.FlexTask.executeOutOfProcess(FlexTask.java:253) 
    at flex.ant.FlexTask.execute(FlexTask.java:223) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:585) 
    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.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38) 
    at org.apache.tools.ant.Project.executeTargets(Project.java:1189) 
    at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:416) 
    at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:105) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) 
    at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:585) 
    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) 
+0

看起來'FlexTask.java' Flex ant任務的'private void executeOutOfProcess()'方法存在一個錯誤。它似乎使用對一個文件的引用來獲取絕對路徑,然後使用該路徑訪問其他內容。我真的不想再花更多時間在它上面,所以就此離開。 – nash 2009-11-05 23:21:40

回答

1

我確定這實際上是flex ant任務中的一個錯誤。 FlexTask.java沒有正確的路徑在Windows機器上的多個驅動器上工作。

1

你有沒有把flexTasks.jarlib文件夾你的螞蟻安裝?

在我來說,我已經複製到D:\Flex_sdk_3.3.0\ant\lib\flexTasks.jarD:\apache-ant-1.7.1\lib\

+0

這不是問題,因爲如果我將SDK移動到其他驅動器,則構建工作。不過謝謝。 – nash 2009-11-05 19:03:26

1

某處有是沒有在它前面的驅動器盤符的路徑。所以當你在'正確'的驅動器上時,它會工作,但不是。

我找到this博客文章 - 在文中搜索MXMLC= - 有人發現了一個解決方案,用於引發相同異常的Mac安裝。你可能能夠適應你的情況。 (看起來可能是在安裝並配置flex mxmlc編譯器時,它並不一定在需要的地方包含驅動器號。)

而不是移動或複製jar,也許您可​​以將完整路徑添加到它將字母作爲構建中的屬性,然後將其附加到類路徑中。

0

將Flex sdk/x.x文件夾複製到與您的源相同的驅動器中,調整flex.sdk.home ant變量並重建。