Ein Compiler-Fehler à la
Eine Datei in einem Quellpfad muss die gleiche Paketstruktur „“ wie das Paket der Definition, „x.y.z“, aufweisen.
(“x.y.z” variieren) behebt man am besten, indem man alle Sourcen dem Klassenpfad hinzufügt. via
Ein Compiler-Fehler à la
Eine Datei in einem Quellpfad muss die gleiche Paketstruktur „“ wie das Paket der Definition, „x.y.z“, aufweisen.
(“x.y.z” variieren) behebt man am besten, indem man alle Sourcen dem Klassenpfad hinzufügt. via
Es ist recht einfach, ein komplettes Projekt als SWC zu kompilieren: Rechtsklick auf’s Projekt -> Run as -> FDT SWC Library (Quelle). Ein Ant-Skript wäre schöner, aber grundsätzlich ist es so erst mal einfach. Was die Sache nämlich an anderer Stelle verkompliziert, ist der allseits beliebte Fehler 1047:
Parameter initializer unknown or is not a compile-time constant.
bzw.
Parameterinitialisierer unbekannt oder keine Kompilierungszeit-Konstante.
Dieser tritt dann auf, wenn man eine Konstante als default-Übergabe-Parameter nutzt, und die Klasse mit der Konstante erst nach dieser Klasse kompiliert wird. Oder so. Es gibt haufenweise Einträge dazu im Bug-Tracker, teilweise schon jahrealt, leider ohne Ergebnis. Die längste Antwort von Adobe (die nicht “OK, wird noch mal geprüft” lautet) ist “Wäre schwierig zu implementieren, machen wir nicht.”^^
Deshalb folgende Lösungsansätze:
Das nervt mich gerade extrem, hat jemand eine bessere Lösung?
Tag,
wer die Flare3D 2.0-Beispiele* in FDT 4.2 ausprobieren möchte, dem sei der folgende Artikel an’s Herz gelegt: How to get started with the Molehill API and Away3D. OK, ist nicht für Flare3D, aber trotzdem hilfreich. Besonders wichtig:
Inkonsistente Verknüpfung in /xy/abc/flashplayer_inc_playerglobal_022711.swc(flash.net.drm:AddToDeviceGroupSetting, flash.net.drm:AuthenticationMethod, flash.net.drm:LoadVoucherSetting). ‘flash.net.drm:LoadVoucherSetting’ ist als extern markiert, ‘flash.net.drm:AddToDeviceGroupSetting’ aber nicht.
bzw auf Englisch:
Inconsistant linkage in /xy/abc/flashplayer_inc_playerglobal_022711.swc(flas h.net.drm:AddToDeviceGroupSetting, flash.net.drm:AuthenticationMethod, flash.net.drm:LoadVoucherSetting) – ‘flash.net.drm:LoadVoucherSetting’ is marked as extern, but ‘flash.net.drm:AddToDeviceGroupSetting’ is not.
Also doch die vorhandene playerglobal in framework/libs/player/10.2/ ersetzen. Man liest vereinzelt auch davon, dass man einen neuen Ordner “11” in frameworks/libs/player anlegen kann, das habe ich aber nicht probiert.
HTH,
Lennart
*Warum kein Away3D? Ich habe keines der beiden Frameworks bisher ausprobiert, aber hier klang Flare3D irgendwie cooler 😉
Wer beim Kompilieren mit Ant in FDT einen Java Heap Space Error bekommt, kann der Java Virtual Machine mehr Speicher zuweisen. Nein, nicht über die Eclipse.ini, sondern über die Einstellungen:
Einstellungen -> Java -> Installed JREs -> [aktuelles JRE] -> Default VM Arguments -> “-Xmx512m”
(ohne Anführungszeichen; den Wert ggf. abwandeln)
Wer dagegen einen “PermGen Space”-Error bekommt (kenne ich auch erst seit neuestem), der regelt das über die “External Tools Configuration”:
“Run”-Menü -> External Tools -> External Tools Configurations -> [aktueller Ant-Task] -> JRE -> VM Arguments -> “-Xmx512m”
(ohne Anführungszeichen)
Hier muss man etwas ausprobieren; mein Wert weicht von der Quelle ab, und die nutzt andere Einstellungen als ihre Quelle 🙂
UPDATE:
Auf http://factornine.wordpress.com/2008/04/15/how-to-increase-memory-allocated-to-eclipse/ sehe ich, wie ich mir nicht nur den aktuellen Heap Space anzeigen lassen kann, sondern auch, wie ich manuell die Garbage Collection angezeigt bekomme:
Einstellungen -> General -> Show heap status
Das Ganze sieht dann so aus:
FDT 4 plus Flex 4 melden mir gerade
[mxmlc] Unexpected multiname type: 16
[mxmlc] Unexpected multiname type: 16
[mxmlc] /Users/Shared/workspace/foo/bar/lib/util/VectorUtils.as
[mxmlc] Fehler: Typ wurde nicht gefunden oder war keine Kompilierungszeit-Konstante: .
Keine Ahnung was das ist – aber beheben kann ich es durch Löschen aller .swf.cache-Dateien und Zurücksetzen des Compilers.
Witzigerweise gibt es einen Eintrag in den Adobe-Foren dazu, in dem auch Vector involviert ist… der scheint mir noch nicht ganz ausgereift zu sein. So kann ich zum Beispiel als Übergabeparameter einer Funktion nicht Vector.<*> angeben (auch nicht Vector.<Object>), sondern nur *, aber das führt hier vllt zu weit.
In Flex 4 muss das Flag embedAsCFF gesetzt sein:
1 |
[Embed(source='assets/fonts/ARIAL.TTF', embedAsCFF='false', fontName='tabfont')] |
Falls jemand weiß, wieso/weshalb/warum, dann gerne in die Comments posten 🙂
Quelle: Hier und Franzi.
Neulich im Flash Builder: “Es wird auf die Verbindung von Adobe Flash Player mit dem Debugger gewartet”. Die kommt aber nie zustande. Ich hatte das Problem bisher immer, also auch mit dem Flash Player 9 in FDT, …, aber in diesem Fall war es der Flash Player 10.1 (Debug), OS X, Firefox, Flash Builder. Die Lösung:
Danke auch an Christian 🙂
Mit Flex 4 kommt eine merkwürdige Warnung:
Warnung: Bei dieser Kompilierungseinheit war in den Frame-Metadaten keine factoryClass zum Laden der konfigurierten, zur Laufzeit gemeinsam genutzten Bibliotheken angegeben. Um ohne zur Laufzeit gemeinsam genutzte Bibliotheken zu kompilieren, legen Sie entweder die Option “-static-link-runtime-shared-libraries” als “true” fest oder entfernen die Option “-runtime-shared-libraries”.
Wem das nichts sagt, und wem Google nicht hilft (weil dort nämlich nur die englische Version zu finden ist): Hier die Lösung.