2009-11-05 99 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变量并重建。