2017-04-09 1 views
1

Wenn wir den Quellcode eines großen Projekts wie Hadoop mit löffel analysieren, kommt es häufig zu dem Problem "Der Typ xxx ist bereits definiert", da es möglicherweise Java-Klassen mit demselben Klassennamen und demselben Paketverzeichnis gibt Teilprojekte.Wie gehen wir mit "Der Typ xxx ist bereits definiert" in der Quellcodeanalyse für den Quellcode eines großen Projekts?

Ich habe den folgenden Fehler, wenn ich "java -cp xx löffel.Launcher -i ~/hadoop-0.23.3-src/-p myspoon.CatchProcessor" ausführen.

Exception in thread "main" spoon.compiler.ModelBuildingException: The type JobInProgress is already defined 
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.reportProblem(JDTBasedSpoonCompiler.java:550) 
    at spoon.support.compiler.jdt.TreeBuilderRequestor.acceptResult(TreeBuilderRequestor.java:37) 
    at spoon.support.compiler.jdt.TreeBuilderCompiler.buildUnits(TreeBuilderCompiler.java:73) 
    at spoon.support.compiler.jdt.JDTBatchCompiler.getUnits(JDTBatchCompiler.java:120) 
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildUnits(JDTBasedSpoonCompiler.java:410) 
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildUnitsAndModel(JDTBasedSpoonCompiler.java:372) 
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.buildSources(JDTBasedSpoonCompiler.java:348) 
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.build(JDTBasedSpoonCompiler.java:119) 
    at spoon.support.compiler.jdt.JDTBasedSpoonCompiler.build(JDTBasedSpoonCompiler.java:102) 
    at spoon.Launcher.buildModel(Launcher.java:700) 
    at spoon.Launcher.run(Launcher.java:651) 
    at spoon.Launcher.run(Launcher.java:106) 
    at spoon.Launcher.main(Launcher.java:99) 

Und ich finde es zwei JobInProgress.java im gleichen Teilprojekt "Hadoop-MapReduce-Projekt"

./hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapred/JobInProgress.java 
./hadoop-mapreduce-project/src/java/org/apache/hadoop/mapred/JobInProgress.java 

So wie dieses Problem zu beheben ????? fand ich schon, dass es scheint, dass wir konnten nicht eine der beiden wegbewegen Löffel Analyse laufen, weil es ein anderes Problem der „fehlenden Dateien“

Exception in thread "main" spoon.compiler.ModelBuildingException: The import org.apache.hadoop.conf cannot be resolved at xxx 

Alle Kommentare für das Problem verursacht? Vielen Dank.

Antwort

1

Projekte wie Hadoop sind mit mehreren Untermodulen definiert, die unabhängig voneinander kompiliert werden: Dann kann der gesamte Quellcode nicht als ein großes Projekt betrachtet werden.

Spoon ist nicht dafür ausgelegt, Maven-Projekte mit Submodulen zu unterstützen, daher müssen Sie jedes Submodul unabhängig voneinander an Spoon senden, aber Sie müssen dabei die Modulhierarchie beachten und, noch wichtiger, müssen Sie den richtigen Klassenpfad verwenden: Wenn z. B. das Modul A von Modul B abhängig ist, dann vergessen Sie nicht, B.jar zu übergeben, wenn Sie A analysieren.

+0

Danke. Dies ist ein guter Vorschlag. Ich werde es versuchen. –

Verwandte Themen