Flex Compilier说源路径和包定义不匹配

时间:2010-10-07 18:56:48

标签: flex actionscript-3 mxmlc

问题在于:

我在同一个包中有三个文件:com.foobar

这些文件的目录是:

C:.. \在MyLibrary \ SRC \ COM \ foobar的\

然后在里面我有foo.as和bar.as

当我尝试运行mxmlc C:.. \ mylibrary \ src \ com \ foobar \ foo.as时出现错误:

在源路径中找到的文件必须与定义的包“com.foobar”具有相同的包结构。

对此我说:确实如此。包是com.foobar。结构是../ com / foobar / foo.as

我在网上发现了一些关于此错误的其他论坛帖子,似乎用户必须使目录与我已经拥有的包名匹配。我错过了什么?

预先感谢您提供任何帮助!

6 个答案:

答案 0 :(得分:8)

一位同事在这方面帮了我很长时间。结果我不得不使用以下命令:

(在包含\src\com\foobar\foo.as的目录x中)

mxmlc -compiler.source-path=.\src -static-link-runtime-shared-libraries=true .\src\com\foobar\foo.as -output .\test.swf

无论出于何种原因,我尝试的-source-path命令都不尽如人意。

我不确定为什么它会像这样工作,但是它现在有效。希望这可以帮助那些试图编写动作脚本包的人。

答案 1 :(得分:1)

如果这是你的问题的原因我不能解决,但我发现当file.mxml引用一个类的file.as并且file.mxml错误时我得到了该错误与.mxml文件中的类命名相关的目录。

所以.mxml文件引用的一般示例

  • 导入MyPackage.Util.MyClass;

那么包含该类的.as文件应该处于相对位置

  • \ HOWTO \ MyFile.mxml

  • \ HOWTO \ MyPackage的\的Util \ MyClass.as

例如,然后调用编译器, .. \ bin \ mxmlc MyFile.mxml

我怀疑如果您尝试在上面的场景中使用source-path指令,它会抱怨已经包含了子目录。

答案 2 :(得分:0)

你在这里提到了3个不同的软件包:com.foo,com.foobar和com.plupload,听起来你有一个目录路径,所有3:\ com \ foobar。如果这些类在目录\ com \ foobar \中,那么它们都需要将包声明为com.foobar。包名称和目录路径需要匹配,否则您将得到您描述的不匹配错误。底线:包名称和目录路径实际上是同义词。

答案 3 :(得分:0)

除了拥有正确的文件夹结构外,还需要逐字匹配文件名和类的名称。这意味着如果你的类名确实是Foo,那么foo.as应该是Foo.as。

答案 4 :(得分:0)

Flash Builder快速提示。

如果您更改了air / flex或任何其他后台程序包,或者甚至添加了新的sdk并且必须重新安排一些文件才能使其工作,那么您可能不得不重新编译或拥有Flash构建器更新其文件地图集。

如果您的src文件夹或默认包充满错误,最常见的问题是Flash Builder只是移动了他们的引用。

如果您右键单击默认包文件(.as或mxml等)并选择Set As Defualt Application,那么这可能会解决您的问题。如果这不起作用,您需要转到:

Project > Properties > ActionScript Build Path 

在底部它将有一个主源文件夹框。如果它是空的,那么只需输入'src',或者输入名称,你可以调用包含所有包文件(.as或其他)的源文件夹。

如果您的默认包/文件仍然显示错误(即在源路径中找到的文件必须具有与定义包相同的包结构'src')

转到Project > Properties > ActionScript Compiler

并查看您正在使用的Flex SDK版本。如果选择了“默认”按钮,请尝试选择使用特定SDK并查看其列出的内容。通常它只列出一个,它会读取像Flex 4.6.0或类似的东西。 记下该名称并在硬盘中搜索flex-sdk-description.xml 这通常在你的:

Adobe > Adobe Flash Builder 4.6(or your current version) > sdks > Flex 4.6.0(与Flash Builder中的名称相同)。

打开该文件,您会看到flex-sdk-description.xml 右键单击或突出显示它,然后选择用记事本(窗口)打开它。 它会有很长的解构者。找到<name>Something written here</name> 这必须与您的Flash Builder Flex SDK选择名称相同(我们刚才发现的那个)。 有时,您必须更改此<name>才能在Flash Builder中使用特定的sdk或扩展程序。这是我无法帮助您的地方,您需要确保此<name>是Flex 4.6.0或您正在使用的任何版本的flex。如果它是 Flex 4.6.0(Air3.6)或有任何其他东西,您可能需要联系adobe或sdk /扩展创建者,看看你能做些什么。

最后检查项目中的输出部分&gt;属性&gt; ActionScript构建路径 因为默认输出是bin-debug。 如果你没有特别改变这个,那么默认情况下它将是:bin-debug

祝你好运!

答案 5 :(得分:0)

请验证您的&#39; .actionScriptProperties&#39;中的所有标签。文件。如果您复制并移动了文件夹,则必须在此处进行验证。就我而言,我改变了 从: