EnglischFranzösischSpanisch

Ad


OnWorks-Favicon

ajc – Online in der Cloud

Führen Sie ajc im kostenlosen Hosting-Anbieter OnWorks über Ubuntu Online, Fedora Online, den Windows-Online-Emulator oder den MAC OS-Online-Emulator aus

Dies ist der Befehl ajc, der beim kostenlosen Hosting-Anbieter OnWorks mit einer unserer zahlreichen kostenlosen Online-Workstations wie Ubuntu Online, Fedora Online, dem Windows-Online-Emulator oder dem MAC OS-Online-Emulator ausgeführt werden kann

PROGRAMM:

NAME/FUNKTION


ajc – Compiler und Bytecode-Weber für die Sprachen AspectJ und Java

ZUSAMMENFASSUNG


Ajc [Optionen] [Datei... | @Datei... | -argfile Datei... ]

Beschreibung


Das Ajc Der Befehl kompiliert und webt AspectJ- und Java-Quell- und .class-Dateien und erzeugt so
.class-Dateien, die mit jeder Java VM (1.1 oder höher) kompatibel sind. Es kombiniert Kompilierung und
Bytecode-Weben und unterstützt inkrementelle Builds; Sie können Bytecode auch zur Laufzeit weben
Verwendung von "" >.

Die Argumente nach den Optionen geben die zu kompilierenden Quelldateien an. Zur Angabe der Quelle
Klassen, verwenden -inpath (unter). Dateien können direkt in der Befehlszeile oder in einem aufgelistet werden
Datei. Das -argfile Datei und @Datei Formen sind äquivalent und werden als Bedeutung interpretiert
alle in der angegebenen Datei aufgeführten Argumente.

Hinweis: Sie müssen explizit bestehen Ajc alle notwendigen Quellen. Geben Sie unbedingt die Quelle an
nicht nur für die Aspekte oder Pointcuts, sondern auch für alle betroffenen Typen. Alles angeben
Quellen ist notwendig, da AJC im Gegensatz zu Javac nicht den Quellpfad durchsucht
Klassen. (Eine Diskussion darüber, welche betroffenen Typen möglicherweise erforderlich sind, finden Sie unter Das AspektJ
Programmierung Leiten, Sytemimplementierung Anhang ../progguide/implementation.html) .

Um Quellen anzugeben, können Sie Quelldateien als Argumente auflisten oder die Optionen verwenden -Quellenwurzeln
or -inpath. Wenn für einen beliebigen Typ mehrere Quellen vorhanden sind, ist das Ergebnis seit AJC undefiniert
hat keine Möglichkeit festzustellen, welche Quelle korrekt ist. (Dies passiert am häufigsten, wenn Benutzer
Fügen Sie das Zielverzeichnis in den Inpath ein und erstellen Sie es neu.)

Optionen
-injars JarList
Veraltet: Verwenden Sie seit 1.2 -inpath, das auch Verzeichnisse akzeptiert.

-inpath Path
Akzeptieren Sie als Quellbytecode alle .class-Dateien in der Ausgabe. Diese werden enthalten sein
Klassen, möglicherweise mit allen anwendbaren Aspekten verwoben. Der Pfad ist ein Single
Argument, das eine Liste von Pfaden zu ZIP-Dateien oder Verzeichnissen enthält, getrennt durch
das plattformspezifische Pfadtrennzeichen.

-Aspektpfad Path
Weben Sie binäre Aspekte aus JAR-Dateien und Verzeichnissen auf dem Pfad in alle Quellen ein.
Die Aspekte sollten von derselben Version des Compilers ausgegeben worden sein. Wenn
Beim Ausführen der Ausgabeklassen sollte der ausgeführte Klassenpfad alle Aspektpfade enthalten
Einträge. Path ist wie Classpath ein einzelnes Argument, das eine Liste von Pfaden enthält
in JAR-Dateien, getrennt durch das plattformspezifische Klassenpfad-Trennzeichen.

-argfile Reichen Sie das
Die Datei enthält eine zeilengetrennte Liste von Argumenten. Jede Zeile in der Datei
sollte eine Option, einen Dateinamen oder eine Argumentzeichenfolge (z. B. einen Klassenpfad oder) enthalten
Inpath). Aus der Datei gelesene Argumente werden in die Argumentliste für eingefügt
der Befehl. Relative Pfade in der Datei werden aus dem Verzeichnis berechnet
enthält die Datei (nicht das aktuelle Arbeitsverzeichnis). Kommentare, wie in Java,
beginnen mit // und bis zum Ende der Zeile verlängern. Im Argument angegebene Optionen
Dateien überschreiben möglicherweise vorhandene Optionswerte, anstatt sie zu erweitern. Vermeiden Sie dies daher
Angabe von Optionen wie -Klassenpfad in Argumentdateien im Gegensatz zu den
Die Argumentdatei ist die einzige Build-Spezifikation. Die Form @Datei ist die gleiche wie
spezifizieren -argfile Datei.

-outjar Ausgabe.jar
Legen Sie die Ausgabeklassen in der ZIP-Datei „output.jar“ ab.

-outxml Generiert eine aop.xml-Datei für das Weben während der Ladezeit mit dem Standardnamen.

-outxmlfile custom/aop.xml
Generieren Sie die Datei aop.xml für das Weben während der Ladezeit mit einem benutzerdefinierten Namen.

-inkrementell
Führen Sie den Compiler kontinuierlich aus. Nach der ersten Kompilierung wird der Compiler
Warten Sie mit der Neukompilierung, bis eine neue Zeile aus der Standardeingabe gelesen wird, und wird dies auch tun
beenden, wenn ein „q“ angezeigt wird. Es werden nur die notwendigen Komponenten neu kompiliert, also a
Die Neukompilierung sollte viel schneller sein als eine zweite Kompilierung. Dafür braucht man
-Quellenwurzeln.

-Quellenwurzeln DirPaths
Suchen und erstellen Sie alle .java- oder .aj-Quelldateien in einem beliebigen Verzeichnis, das in aufgeführt ist
DirPaths. DirPaths ist wie der Klassenpfad ein einzelnes Argument, das eine Liste von enthält
Pfade zu Verzeichnissen, getrennt durch das plattformspezifische Klassenpfad-Trennzeichen.
Erforderlich für -inkremental.

-crossrefs
Generieren Sie eine Build-.ajsym-Datei im Ausgabeverzeichnis. Wird zum Ansehen verwendet
Querverweise durch Tools wie den AspectJ Browser.

-emacssym Erzeugt .ajesym-Symboldateien für die Emacs-Unterstützung (veraltet).

-Xlint Identisch mit -Xlint:warning (standardmäßig aktiviert)

-Xlint:{level}
Legen Sie die Standardstufe für Meldungen über potenzielle Programmierfehler fest
Querschnittscode. {level} kann „Ignorieren“, „Warnung“ oder „Fehler“ sein. Dies überschreibt
Einträge in org/aspectj/weaver/XlintDefault.properties ausspectjtools.jar, aber
überschreibt nicht die mit der Option -Xlintfile festgelegten Ebenen.

-Xlintfile PropertyFile
Geben Sie eine Eigenschaftendatei an, um Ebenen für bestimmte Querschnittsmeldungen festzulegen.
PropertyFile ist ein Pfad zu einer Java-Properties-Datei, die dieselbe Eigenschaft annimmt
Namen und Werte als org/aspectj/weaver/XlintDefault.properties aus
spectjtools.jar, das es auch überschreibt.

-help Gibt Informationen zu Compiler-Optionen und -Nutzung aus

-version Gibt die Version des AspectJ-Compilers aus

-Klassenpfad Path
Geben Sie an, wo Benutzerklassendateien zu finden sind. Path ist ein einzelnes Argument, das a enthält
Liste der Pfade zu ZIP-Dateien oder Verzeichnissen, getrennt durch die plattformspezifische
Pfadbegrenzer.

-bootclasspath Path
Überschreiben Sie den Speicherort des Bootklassenpfads der VM, um Typen auszuwerten
kompilieren. Path ist ein einzelnes Argument, das eine Liste von Pfaden zu ZIP-Dateien oder enthält
Verzeichnisse, getrennt durch das plattformspezifische Pfadtrennzeichen.

-extdirs Path
Überschreiben Sie den Speicherort der VM-Erweiterungsverzeichnisse zum Zweck der Typenauswertung
beim Kompilieren. Path ist ein einzelnes Argument, das eine Liste von Pfaden enthält
Verzeichnisse, getrennt durch das plattformspezifische Pfadtrennzeichen.

-d Verzeichnis
Geben Sie an, wo generierte .class-Dateien abgelegt werden sollen. Falls nicht angegeben, Verzeichnis
Standardmäßig wird das aktuelle Arbeitsverzeichnis verwendet.

-Ziel [1.1 zu 1.5]
Geben Sie die Zieleinstellung für die Klassendatei an (1.1 bis 1.5, Standard ist 1.2).

-1.3 Compliance-Level auf 1.3 setzen. Dies impliziert -source 1.3 und -target 1.1.

-1.4 Konformitätsstufe auf 1.4 setzen (Standard). Dies impliziert -source 1.4 und -target 1.2.

-1.5 Stellen Sie die Konformitätsstufe auf 1.5 ein. Dies impliziert -source 1.5 und -target 1.5.

-source [1.3|1.4|1.5]
Assertionen umschalten (1.3, 1.4 oder 1.5 – Standard ist 1.4). Bei Verwendung von -source 1.3,
Eine unter Java 1.4 gültige „assert()“-Anweisung führt zu einem Compilerfehler.
Bei Verwendung von -source 1.4 behandeln behaupten als Schlüsselwort und implementieren Sie Behauptungen
gemäß der Sprachspezifikation 1.4. Bei Verwendung von -source 1.5, Java 5-Sprache
Funktionen sind zulässig.

-nowarn Gibt keine Warnungen aus (entspricht „-warn:none“). Dadurch werden keine Nachrichten unterdrückt
Erzeugt durch erklären Warnung or Xlint.

-warnen: Artikel
Geben Sie Warnungen für alle Instanzen der durch Kommas getrennten Liste fragwürdigen Codes aus
(z. B. '-warn:unusedLocals,deprecation'):

KonstruktorName-Methode mit Konstruktornamen
packageDefaultMethod versucht, die Paketstandardmethode zu überschreiben
Veraltungsverwendung eines veralteten Typs oder Mitglieds
maskedCatchBlocks versteckter Catch-Block
Die lokale Variable „unususerLocals“ wird nie gelesen
Das Argument der unbenutztenArguments-Methode wird nie gelesen
Die Importanweisung von unsusedImports wird vom Code in der Datei nicht verwendet
none unterdrückt alle Compiler-Warnungen

-warn:keine unterdrückt keine von generierten Nachrichten erklären Warnung or Xlint.

-Missbilligung
Identisch mit -warn:deprecation

-noImportError
Geben Sie keine Fehler für ungelöste Importe aus

-proceedOnError
Kompilieren Sie nach einem Fehler weiter und sichern Sie Klassendateien mit problematischen Methoden

-g:[Zeilen,Variablen,Quelle]
Debug-Attributebene, die drei Formen annehmen kann:

-g alle Debug-Informationen ('-g:lines,vars,source')
-g:none keine Debug-Informationen
-g:{items} Debug-Informationen für alle/alle [Zeilen, Variablen, Quelle], z. B.
-g:Linien,Quelle

-preserveAllLocals
Behalten Sie alle lokalen Variablen während der Codegenerierung bei (um das Debuggen zu erleichtern).

-referenceInfo
Referenzinformationen berechnen.

-Codierung Format
Geben Sie das Standard-Quellkodierungsformat an. Geben Sie eine benutzerdefinierte Codierung pro Datei an
Basis, indem jedem Datei-/Ordnernamen der Eingabequelle das Suffix „[Kodierung]“ hinzugefügt wird.

-verbose Gibt Meldungen über zugegriffene/verarbeitete Kompilierungseinheiten aus

-showWeaveInfo
Senden Sie Nachrichten über das Weben

-Log Datei Geben Sie eine Protokolldatei für Compiler-Meldungen an.

-progress Fortschritt anzeigen (erfordert -log-Modus).

-time Zeigt Geschwindigkeitsinformationen an.

-noExit Rufen Sie System.exit(n) nicht am Ende der Kompilierung auf (n=0, wenn kein Fehler vorliegt)

-wiederholen N Wiederholen Sie den Kompilierungsvorgang N-mal (normalerweise, um eine Leistungsanalyse durchzuführen).

-XterminateAfterCompilation
Bewirkt, dass der Compiler vor dem Weben beendet wird

-XaddSerialVersionUID
Veranlasst den Compiler, das SerialVersionUID-Feld zu berechnen und einem beliebigen Typ hinzuzufügen
Implementieren von Serializable, das von einem Aspekt betroffen ist. Das Feld ist
berechnet auf der Grundlage der Klasse vor dem Weben.

-Xreweavable[:komprimieren]
(Experimentell – jetzt als Standard veraltet) Führt Weaver im Reweavable-Modus aus
bewirkt, dass gewebte Klassen erstellt werden, die vorbehaltlich der neu gewebt werden können
Einschränkung, dass beim Versuch einer Neuwebung alle Arten, die das Gewebte empfohlen haben, berücksichtigt werden
Der Typ muss zugänglich sein.

-XnoInline
(Experimentell) Umgehen Sie keine Ratschläge

-XinkrementelleDatei Datei
(Experimentell) Dies funktioniert wie der inkrementelle Modus, verwendet jedoch keine Datei
Standardeingabe zur Steuerung des Compilers. Die Datei wird jedes Mal neu kompiliert
geändert und stoppt, wenn die Datei gelöscht wird.

-XserializableAspects
(Experimentell) Normalerweise ist es ein Fehler, Aspekte als serialisierbar zu deklarieren. Das
Option entfernt diese Einschränkung.

-XnotReweavable
(Experimentell) Erstellen Sie Klassendateien, die nicht nachträglich von AspectJ neu gewebt werden können.

-Xajruntimelevel:1.2, ajruntimelevel:1.5
(Experimentell) Ermöglicht die Generierung von Code, der auf eine 1.2- oder 1.5-Ebene abzielt
AspectJ-Laufzeit (Standard 1.5)

Reichen Sie das Namen
ajc akzeptiert Quelldateien entweder mit .Java Erweiterung oder die .aj Verlängerung. Wir
normalerweise verwenden .Java für alle unsere Dateien in einem AspectJ-System – Dateien, die Aspekte enthalten
sowie Dateien, die Klassen enthalten. Wenn Sie jedoch die Notwendigkeit haben, dies mechanisch zu tun
Unterscheiden Sie Dateien, die die zusätzliche Funktionalität von AspectJ nutzen, von reinen Dateien
Java empfehlen wir die Verwendung von .aj Erweiterung für diese Dateien.

Wir möchten andere Mittel der mechanischen Unterscheidung wie Namenskonventionen abraten
oder Unterpakete zugunsten der .aj Erweiterung.

· Dateinamenskonventionen sind schwer durchzusetzen und führen zu umständlichen Namen für Ihre Dateien.
Anstelle von TracingAspect.java Wir empfehlen die Verwendung Tracing.aj (oder nur Tracing.java)
stattdessen.

· Unterpakete verschieben Aspekte aus ihrem natürlichen Platz in einem System und können eine erstellen
künstliches Bedürfnis nach privilegierten Aspekten. Anstatt ein Unterpaket wie hinzuzufügen
Aspekte Wir empfehlen die Verwendung der .aj Erweiterung und Einbindung dieser Dateien in Ihre
stattdessen vorhandene Pakete.

Kompatibilität
AspectJ ist eine kompatible Erweiterung zur Programmiersprache Java. Der AspectJ-Compiler
hält sich an die Das Javac Sprache Spezifikation, Zweite Ausgabe (Buch)
http://java.sun.com/docs/books/jls/index.html und zu dem Das Javac Assistent Maschine
Spezifikation, Zweite Ausgabe (Buch) http://java.sun.com/docs/books/vmspec/index.html und
läuft auf jeder Java 2-kompatiblen Plattform. Der generierte Code läuft auf jedem Java 1.1 oder
später kompatible Plattform. Weitere Informationen zur Kompatibilität mit Java und mit
Frühere Versionen von AspectJ finden Sie unter "" >.

Beispiele
A einfach Beispiel

Kompilieren Sie zwei Dateien:

ajc HelloWorld.java Trace.java

An Beispiel Verwendung von -argfile/@

Um die Angabe von Dateinamen in der Befehlszeile zu vermeiden, listen Sie die Quelldateien zeilengetrennt auf
Text-Argumentdatei. Quelldateipfade können absolut oder relativ zur Arg-Datei sein
Andere Argumentdateien durch @-Referenz einschließen. Die folgende Datei Quellen.lst enthält
absolute und relative Dateien und @-Referenzen:

Gui.java
/home/user/src/Library.java
data/Repository.java
data/Access.java
@../../common/common.lst
@/home/user/src/lib.lst
view/body/ArrayView.java

Kompilieren Sie die Dateien entweder mit der Form -argfile oder @:

ajc -argfile resources.lst
ajc @sources.lst

Argfiles werden auch von Jikes und Javac unterstützt, sodass Sie die Dateien in Hybrid-Builds verwenden können.
Allerdings variiert die Unterstützung:

· Nur ajc akzeptiert Befehlszeilenoptionen

· Jikes und Javac akzeptieren keine internen @argfile-Referenzen.

· Jikes und Javac akzeptieren nur das @file-Formular in der Befehlszeile.

An Beispiel Verwendung von -inpath und -Aspektpfad

Bytecode-Weben mit -inpath: AspectJ 1.2 unterstützt das Weben von .class-Dateien in Eingabe-ZIP/JAR
Dateien und Verzeichnisse. Die Verwendung von Eingabe-JARs ähnelt dem Kompilieren der entsprechenden Quelldateien.
und alle Binärdateien werden zur Ausgabe ausgegeben. Obwohl sich Java-kompatible Compiler unterscheiden können
Für deren Ausgabe sollte AJC alle von Javac, Jikes, Eclipse usw. erstellten Klassendateien als Eingabe verwenden.
und natürlich ajc. In -inpath enthaltene Aspekte werden wie in andere .class-Elemente eingebunden
Dateien, und sie wirken sich wie üblich auf andere Typen aus.

Aspect-Bibliotheken mit -aspectpath: AspectJ 1.1 unterstützt das Weben aus schreibgeschützten Bibliotheken
Aspekte enthalten. Wie Eingabegläser wirken sie sich auf alle Eingaben aus; Im Gegensatz zu Eingabegläsern sind sie
selbst werden nicht beeinflusst oder als Ausgabe ausgegeben. Mit Aspektbibliotheken zusammengestellte Quellen
müssen mit denselben Aspektbibliotheken in ihrem Klassenpfad ausgeführt werden.

Das folgende Beispiel erstellt das Ablaufverfolgungsbeispiel in einer Befehlszeilenumgebung. es erstellt
Eine schreibgeschützte Aspektbibliothek, die einige Klassen zur Verwendung als Eingabebytecode kompiliert und kompiliert
die Klassen und andere Quellen mit der Aspektbibliothek.

Das Tracing-Beispiel befindet sich in der AspectJ-Distribution ({aspectj}/doc/examples/tracing). Das
verwendet die folgenden Dateien:

Aspektj1.1/
Behälter/
Ajc
lib /
Aspektjrt.jar
Beispiele /
Rückverfolgung/
Circle.java
BeispielMain.java
lib /
AbstractTrace.java
TraceMyClasses.java
notrace.lst
Square.java
Tracelib.lst
Tracev3.lst
TwoDShape.java
Version3/
Trace.java
TraceMyClasses.java

Im Folgenden wird als Pfadtrennzeichen „;“ verwendet, als Dateitrennzeichen jedoch „/“. Alle Befehle sind
auf einer Zeile. Passen Sie Pfade und Befehle nach Bedarf an Ihre Umgebung an.

Richten Sie den Pfad, den Klassenpfad und das aktuelle Verzeichnis ein:

CD-Beispiele
exportieren Sie ajrt=../lib/aspectjrt.jar
export CLASSPATH="$ajrt"
export PATH="../Behälter:$PATH"

Erstellen Sie eine schreibgeschützte Ablaufverfolgungsbibliothek:

ajc -argfile tracing/tracelib.lst -outjar Tracelib.jar

Erstellen Sie die Anwendung mit Ablaufverfolgung in einem Schritt:

ajc -aspectpath Tracelib.jar -argfile tracing/notrace.lst -outjar Tracedapp.jar

Führen Sie die Anwendung mit Ablaufverfolgung aus:

java -classpath "$ajrt;tracedapp.jar;tracelib.jar" tracing.ExampleMain

Erstellen Sie die Anwendung mit Ablaufverfolgung aus Binärdateien in zwei Schritten:

· (a) Erstellen Sie die Anwendungsklassen (verwenden Sie zur Demonstration Javac):

mkdir-Klassen
javac -d Klassen tracing/*.java
jar cfM app.jar -C-Klassen.

· (b) Erstellen Sie die Anwendung mit Ablaufverfolgung:

ajc -inpath app.jar -aspectpath Tracelib.jar -outjar Tracedapp.jar

Führen Sie die Anwendung mit Ablaufverfolgung aus (wie oben):

java -classpath "$ajrt;tracedapp.jar;tracelib.jar" tracing.ExampleMain

Führen Sie die Anwendung ohne Ablaufverfolgung aus:

java -classpath „app.jar“ tracing.ExampleMain

Das AspektJ Compiler API
Der AspectJ-Compiler ist vollständig in Java implementiert und kann als Java-Klasse aufgerufen werden.
Die einzige Schnittstelle, die als öffentlich betrachtet werden sollte, sind die öffentlichen Methoden in
org.aspectj.tools.ajc.Main. Z.B, main(String[] Argumente) Nimmt den Standard an Ajc Befehl
Zeilenargumente. Dies bedeutet, dass eine alternative Möglichkeit zum Ausführen des Compilers besteht

Java org.aspectj.tools.ajc.Main [Möglichkeit...] [Datei...]

Um programmgesteuert auf Compilermeldungen zuzugreifen, verwenden Sie die Methoden setHolder(IMessageHolder
Halter) und / oder run(String[] args, IMessageHolder Halter). Ajc meldet jede Nachricht an die
Halter verwenden IMessageHolder.handleMessage(..). Wenn Sie nur die Nachrichten sammeln möchten,
- MessageHandler wie dein IMessageHolder. Kompilieren Sie beispielsweise die Datei und führen Sie sie aus
im Anschluss mit spectjtools.jar auf dem Klassenpfad:

import org.aspectj.bridge.*;
import org.aspectj.tools.ajc.Main;
java.util.Arrays importieren;

öffentliche Klasse WrapAjc {
public static void main (String [] args) {
Hauptcompiler = new Main();
MessageHandler m = new MessageHandler();
compiler.run(args, m);
IMessage[] ms = m.getMessages(null, true);
System.out.println("messages: " + Arrays.asList(MS));
}
}

Stapeln Traces (Spuren) und Quelldatei Attribut
Im Gegensatz zu herkömmlichen Java-Compilern kann der AspectJ-Compiler in bestimmten Fällen generieren
Klassendateien aus mehreren Quelldateien. Leider das ursprüngliche Java-Klassendateiformat
unterstützt nicht mehrere SourceFile-Attribute. Um sicherzustellen, dass alle Quelldateien vorhanden sind
Wenn Informationen verfügbar sind, kann der AspectJ-Compiler in manchen Fällen mehrere Dateinamen kodieren
im SourceFile-Attribut. Wenn die Java VM Stacktraces generiert, verwendet sie diese
Attribut zur Angabe der Quelldatei.

(Der AspectJ 1.0-Compiler unterstützt auch die .class-Dateierweiterungen von JSR-45. Diese
Ermöglichen Sie kompatiblen Debuggern (z. B. JDB in Java 1.4.1), die richtige Datei und Zeile zu identifizieren
sogar viele Quelldateien für eine einzelne Klasse gegeben. JSR-45-Unterstützung ist für AJC in geplant
AspectJ 1.1, ist jedoch nicht in der ersten Version enthalten. Um vollständig debuggbare .class-Dateien zu erhalten, verwenden Sie
die Option -XnoInline.)

Wahrscheinlich sehen Sie dieses Format nur dann, wenn Sie Stack-Traces anzeigen
möglicherweise auf Spuren des Formats stoßen

java.lang.NullPointerException
bei Main.new$constructor_call37(Main.java;SynchAspect.java[1k]:1030)

wo statt wie üblich

Datei:Zeilennummer

Format, sehen Sie

File0;File1[Number1];File2[Number2] ... :LineNumber

In diesem Fall ist LineNumber der übliche Offset in Zeilen plus der „Startzeile“ der tatsächlichen
Quelldatei. Das bedeutet, dass Sie LineNumber sowohl zum Identifizieren der Quelldatei als auch zum Suchen verwenden
die fragliche Zeile. Die Zahl in [Klammern] nach jeder Datei gibt Ihnen den virtuellen „Start“ an
Zeile“ für diese Datei (die erste Datei beginnt mit 0).

In unserem Beispiel aus dem Nullzeiger-Ausnahme-Trace ist die virtuelle Startlinie 1030.
Da die Datei SynchAspect.java bei Zeile 1000 [1k] „startet“, zeigt die LineNumber auf line
30 von SynchAspect.java.

Wenn Sie also mit solchen Stapelspuren konfrontiert werden, können Sie den tatsächlichen Quellspeicherort folgendermaßen ermitteln:
Schauen Sie sich die Liste der „Startlinien“-Nummern an, um die Nummer direkt unter der angezeigten Linie zu finden
Nummer. Das ist die Datei, in der sich der Quellspeicherort tatsächlich befindet. Dann subtrahieren
Ermitteln Sie anhand der angezeigten Zeilennummer die „Startzeile“, um die tatsächliche Zeilennummer darin zu finden
Datei.

In einer Klassendatei, die nur aus einer einzigen Quelldatei stammt, generiert der AspectJ-Compiler
SourceFile-Attribute im Einklang mit herkömmlichen Java-Compilern.

Ajc(1)

Nutzen Sie AJC online über die Dienste von onworks.net


Kostenlose Server & Workstations

Laden Sie Windows- und Linux-Apps herunter

Linux-Befehle

Ad