我在Flex中实现了一些我希望在多个AIR项目中使用的实用程序类。我创建了一个包含这些类的swc。我正在使用Linux机器而没有FlashBuilder。所以我使用的是compc和mxmlc命令行SDK工具。我的问题是,在构建独立项目时,我无法找到指定swc的方法。教程提出了以下命令:
mxmlc -load-config /opt/flex/4.1.0/frameworks/air-config.xml -library-path=/path/to/utility.swc hello.mxml
。但是,使用它会给我错误hello.mxml: Error: Unable to locate specified base class 'mx.core.WindowedApplication' for component class 'hello'
。如果我将所有代码从swc移动到单个整体项目,一切正常。有人可以帮我从这里出去吗?独立项目的代码是:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" windowComplete="completeHandler();">
<mx:Script>
<![CDATA[
import com.example.Ext;
private function completeHandler():void
{
var e: Ext = new Ext();
e.hi();
}
]]>
</mx:Script>
<mx:Label text="Hello World" />
</mx:WindowedApplication>
类型Ext包含在utility.swc中。
更新:
我修复了上一个错误。命令行应该是mxmlc -load-config /opt/flex/4.1.0/frameworks/air-config.xml -library-path+=/path/to/utility.swc hello.mxml
。这会将我的swc附加到现有库路径而不是替换它。但是,我有一个新问题。现在错误是hello.mxml(10): Error: Type was not found or was not a compile-time constant: Ext.
我也粘贴了utility.swc的代码:
package com.example {
public class Ext {
public function Ext {
// do something
}
public function foo( ): void {
return;
}
}
}
答案 0 :(得分:1)
使用-library-path+=/path/to/my.swc
。如果使用=
而不是+=
,编译器将丢弃路径中已有的所有平台库。