Zweite Service Klasse beim Kompilieren

Alex_Wa

Mitglied
Hallo zusammen,

ich habe eine Spring-Anwendung die ich kompiliert habe und local speicher. Jetzt ist mir in der JAR-Datei aufgefallen, dass mein Programm eine Service-Klasse beim Ausführen des Services aufruft die gar nicht im Verzeichnis angelegt ist.

Wenn ich die Klasse aus der JAR entferne und den Service im meiner test-Umgebung aufrufe, erscheint eine Fehlermeldung in der Konsole die besagt, dass genau die Klasse nicht exisitiert die ich entfert habe und deshalb der Service nicht aufgerufen werden kann.

Demnach habe ich meine "Main" Service-Klasse mit den Namen "BuildExcelService.class" und die die aus irgendeinem Grund einfach mit erstellt wird, mit dem Namen "BuildExcelService$.class". Aber die Main-Service Klasse wird für den Serviceaufruf gar nicht erst beim Ausführen angesprochen.

Das führt dazu, dass die Erstellung meiner Excel-Datei fast 17 Minuten dauert...

Anschließend habe ich diese Klasse im Projektverzeichnis mit der Search-Funktion von Eclipse gesucht. Diese taucht dann tatsächlich in meinem target-Ordner auf unter dem default-compile Ordner.


Hatte jemand bereits ähnliche Probleme?

Bin für jeden Tipp dankbar :).


Lieben Dank und einen schönen Tag

SG

Alex
 

KonradN

Super-Moderator
Mitarbeiter
Wie wäre es, wenn Du uns z.B. einmal die BuildExcelService.java zeigst. Dann kann man da auch schauen, was für innere, anonyme Klassen Du da ggf. nutzt / hast.

(Und ich vermute, dass Du da eine 1 vergessen hast und die Datei BuildExcelService$1.class heisst?)

Und eine JAR Datei, die vom Projekt erzeugt wird, würde ich manuell nicht so anpassen - wenn dann sollte man das Projekt prüfen, was Da im Projekt gemacht wird. In der Regel hat das alles seine Berechtigung. Und daher ist auch klar, dass es dann Probleme gibt, denn wenn Du eine innere Klasse hast, dann wird die ja auch benötigt um die Klasse zu nutzen.

Und wenn etwas lange dauert, dann sollte man analysieren, was da denn wieviel Zeit benötigt. Da hast Du scheinbar noch nichts unternommen so dass keine belastbaren Ergebnisse vorliegen.
 

Alex_Wa

Mitglied
Die Service-Klasse besteht aus ca. 2000 Zeilen Code... und dort sind paar Sachen geschrieben die nicht veröffentlicht werden dürfen. SORRY. Da kann ich nicht einfach den ganzen Source-Code online stellen.

Sonst hätte ich natürlich wie gewohnt, den vollständigen Code bereits oben eingebettet.

Falls Sie mir aber einen Tipp geben können auf was ich hier zu achten habe gehe ich Zeile für Zeile durch. Oder checke ggf. meine Instanzen erneut.

(Und ich vermute, dass Du da eine 1 vergessen hast und die Datei BuildExcelService$1.class heisst?)
Tatsächlich. Danke dafür!

Und eine JAR Datei, die vom Projekt erzeugt wird, würde ich manuell nicht so anpassen
Hatte leider keine adnere Wahl. Ich konnte so überprüfen welche Klasse tatsächlich aufgerufen wird, wenn ich es nicht local teste.

Die Analyse habe ich bereits mit Logging überprüft. Was aber seltsam ist, dass, wenn ich den Test local durchführe die Bearbeitung keine 2 Minuten dauert. Wenn ich es aber in meine Test-Umgebung deploye und starte, dauert es über 15 Minuten.
 

Alex_Wa

Mitglied
Die einzige Klasse die hier in Frage kommt wäre folgende:

Java:
private List<CsvModel> readCsvFolder() throws Exception {
        
        FilenameFilter filter = new FilenameFilter() {
            public boolean accept(File directory, String fileName) {
            return fileName.endsWith(".csv");
            }
        };

        List<CsvModel> csvValues = null;
        
        try {
            File[] files = new File(inputFolder).listFiles(filter);
            
            if (files.length != 1) {
                throw new Exception("Es wurde keine oder zu viele Csv-Dateien gefunden.");
            }
            
            File f = files[0];
            csvValues = getCsvValues(f.getAbsolutePath());

        } catch (Exception e) {
            logger.error("Keine Csv Datei gefunden." + e);
            throw e;

        }
        return csvValues;
 

Alex_Wa

Mitglied
Tatsächlich, es lag an dieser Klasse. Hab den Aufruf aus dem Code auskommentiert und erneut kompiliert. Und siehe da, die Klasse mit der $1 ist weg.

Danke @KonradN deine Antwort hat mir geholfen :)
 

KonradN

Super-Moderator
Mitarbeiter
Nur noch zur Information: diese .class Dateien mit $ kommen immer durch innere Klassen.

Also wenn man etwas hat wie:
Java:
public class OuterTest {
    public class InnerTest {
        
    }
}
dann hat man zum einen die Klasse OuterTest, diese landet in einer OuterTest.class.
Das andere ist eine innere Klasse, die wird zu OuterTest$InnerTest.class

Nun kann man aber auch innere Klassen haben, die keinen Namen haben. Diese sind anonym:
Beispiel nehme ich aus Deinem Code:
Code:
        FilenameFilter filter = new FilenameFilter() {
            // Implementationsdetails
        };
Hier wird eine anonyme Klasse erzeugt, die von FilenameFilter erbt. Aber die Klasse hat keinen Namen bekommen. Bei diesen anonymen Klassen wird einfach gezählt. Die erste wird zu 1, dann 2, ...

Um so etwas im Code zu finden, kann man immer nach new mit { ... } schauen.

Wenn ich sowas sehe, dann auch gleich noch ein Hinweis zu Lambda Expressions:
Das FilenameFilter ist ein Interface, das nur diese eine Methode fordert (= functional interface), dann kann man sowas z.B. auch als Lambda schreiben, also etwas wie:
Java:
        FilenameFilter filter = (d, f) -> f.endsWith(".csv");
(Das einfach nur einmal als kleiner Hinweis. Das ist dann keine Anonyme Klasse, es gibt kein $1.class oder so. Lambda Expressions werden teilweise anonyme Methoden genannt (was im Java Umfeld eher unüblich ist).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Encera Zweite Main-Methode zuschalten Allgemeine Java-Themen 18
S iText: zweite Seitenhälfte mit vorhandenen pdf füllen Allgemeine Java-Themen 2
M Variablen Variablenproblem die Zweite! Allgemeine Java-Themen 7
P String die zweite Allgemeine Java-Themen 7
G Klappe die Zweite. JSAPI - Java Speech Allgemeine Java-Themen 5
Saxony zweite Seite bei iReport Allgemeine Java-Themen 3
J gzip, die zweite: java.io.IOException: Not in GZIP format Allgemeine Java-Themen 2
N Permutation die zweite Allgemeine Java-Themen 3
N Aus Anwendung zweite Java-Anwendung öffen. Wie? Allgemeine Java-Themen 6
izoards JAR als Windows Service mit Appache Procrun (prunsrv) Allgemeine Java-Themen 6
O Service oder Controller Allgemeine Java-Themen 6
OnDemand Thread / Service abbrechen Allgemeine Java-Themen 3
X Kapselung Wie würdet ihr ein Service Layer erreichbar machen ... Allgemeine Java-Themen 62
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
K Multithreading: Service(Task), wait und continue Allgemeine Java-Themen 21
X Threads Java Chached Executors Service Allgemeine Java-Themen 12
P Entity Objekt Methoden vs Service methoden Allgemeine Java-Themen 2
K Hilfe bei GUI für Pizza-Service Allgemeine Java-Themen 11
L TV Programm API/Web Service o.ä. Allgemeine Java-Themen 6
D Java Objekt als Service in Runtime registrieren Allgemeine Java-Themen 1
Nero90 FileSystem Watcher Service Allgemeine Java-Themen 1
W Windows (Service) Hooking Allgemeine Java-Themen 8
C Threads ExecutorService shutdown abbrechen und service "starten" ? Allgemeine Java-Themen 3
A Framework für einen Web Service Allgemeine Java-Themen 6
M Webservices: WSDL Files ohne "Service" Element? Allgemeine Java-Themen 4
D ewig laufendes Javaprogramm ("Service") Allgemeine Java-Themen 17
D Executor Service nach getaner Arbeit beenden Allgemeine Java-Themen 3
Iron Monkey Listening for Print Service Status Changes Allgemeine Java-Themen 2
D Daemon bzw. Windows Service Allgemeine Java-Themen 5
O Unterschied zwischen ThreadPoolExecutor und Executor Service Allgemeine Java-Themen 7
J url-Service timeout einrichten? Allgemeine Java-Themen 10
G Java App als Service Allgemeine Java-Themen 2
M Methodenübersicht einer Klasse einsehen Allgemeine Java-Themen 14
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
B Ein Objekt einer Klasse mehreren anderen Klassen zur Verfügung stellen? Allgemeine Java-Themen 6
Atten007 Java-Klasse auf macOS entpacken? Allgemeine Java-Themen 2
M Klasse durch Klassen Aufteilung verbessern, aber wo? Allgemeine Java-Themen 1
E Eine Methode einer extendeten Klasse deakitivieren Allgemeine Java-Themen 12
H Kombination Interface und Abstrakte Klasse bei Generics Allgemeine Java-Themen 3
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Y ImagePanel von anderer Klasse in eine MainFrame Klasse hinzufügen. Allgemeine Java-Themen 1
Lukas2904 Schleife mit ansteuerung einer Klasse Allgemeine Java-Themen 5
d.lumpi Aus Einer Klasse auf ein Objekt einer anderen Klasse Zugreifen Allgemeine Java-Themen 1
missy72 Klassen Eigene Klasse MessageWindow ähnlich der Alert Klasse Allgemeine Java-Themen 2
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
kanywayne Java programmieren: Polynom Klasse Allgemeine Java-Themen 4
L Die abzuleitende Klasse als Parameter übergeben Allgemeine Java-Themen 4
S Klassen Einfügen von unbekannter menge an Variablen in eine Klasse mithilfe von ASM Allgemeine Java-Themen 5
C Klasse mit Mockito simulieren Allgemeine Java-Themen 9
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
S static in Interface und Klasse Allgemeine Java-Themen 2
W Was genau sind IOTools? Kann ich stattdessen nicht die Scanner Klasse verwenden? Allgemeine Java-Themen 3
V Threads Probleme beim Aufrufen von Methoden einer anderen Klasse (Threads) Allgemeine Java-Themen 14
X Collections Gibt es eine Klasse welche die Vorteile von List und HashMap vereint, aber konstante Laufzeit (O(1)) hat in Java? Allgemeine Java-Themen 4
D javassist API Klasse in MethodCall ermitteln Allgemeine Java-Themen 8
kodela Klasse mit "gezipten" Daten Allgemeine Java-Themen 6
J Builder Klasse mit Lombok bauen Allgemeine Java-Themen 2
L Operatoren Java Reflections: Alle Methoden einer Klasse aufrufen ohne Exceptions Allgemeine Java-Themen 5
M [SOAP] - Klasse aus WSDL ausschließen Allgemeine Java-Themen 2
N Generic Type einer Generischen Klasse während der Laufzeit bekommen Allgemeine Java-Themen 2
X Klassen Klasse BreakIterator Allgemeine Java-Themen 6
R Arraylist in andere Klasse leiten und bearbeiten Allgemeine Java-Themen 10
kodela Klassen Klasse "vergisst" ihre Daten Allgemeine Java-Themen 2
pkm Kann eine ServerSocket-Klasse nicht stateful sein? Allgemeine Java-Themen 4
E Socket Dynamische Klasse von ObjectOutputStream lesen. Allgemeine Java-Themen 8
M Matcher-Klasse findet match nicht Allgemeine Java-Themen 6
cool_brivk24 Variablen abfragen von Boolean von anderer Klasse Allgemeine Java-Themen 12
S Seltsames Ergebnis mit Date-Klasse Allgemeine Java-Themen 6
J int Werte in einer anderen Klasse in Arrays speichern Allgemeine Java-Themen 3
D Warum kann ich eine (deflaut) Klasse aus einer Libary in einem anderen Projekt benutzen? Allgemeine Java-Themen 3
Neoline Klassen Singleton Klasse buchmanager Allgemeine Java-Themen 19
M Kapselung Modellierung von Intervallen: Klasse Interval Allgemeine Java-Themen 4
B Übernommene Variablen(werte) aus der Main-Klasse ändern? Allgemeine Java-Themen 9
ReinerCoder Klasse kann nicht public deklariert werden Allgemeine Java-Themen 2
ReinerCoder Methode einer Klasse meldet Fehler "misplaced construct(s)" Allgemeine Java-Themen 13
I Collection - contains-Methode überschreiben (anonyme innere Klasse) Allgemeine Java-Themen 4
X Klassen File-Klasse wird als Directory markiert Allgemeine Java-Themen 8
S Methoden Liste soll Methode aus innerer Klasse aufrufen Allgemeine Java-Themen 4
J IndexOutOfBoundsException bei der Nutzung der Klasse Message von mime4j Allgemeine Java-Themen 5
P Array einer abstrakten Klasse Allgemeine Java-Themen 4
J Zugriff auf erstellte Objekte einer Klasse von einer Klasse ausserhalb Allgemeine Java-Themen 3
kodela Dynamisches Array in einer Klasse Allgemeine Java-Themen 5
M Was geschieht mit Java-Klasse, die aus ArrayList entfernt wird? Allgemeine Java-Themen 10
perlenfischer1984 Lombok Builder soll andere Klasse bauen Allgemeine Java-Themen 4
perlenfischer1984 Mit Lombok Builder Felder in Super Klasse füllen Allgemeine Java-Themen 12
T String aus While Schleife für ganze Klasse sichtbar machen Allgemeine Java-Themen 5
K Best Practice Auf die Klasse zugreifen im erzeugten ActionListener Allgemeine Java-Themen 2
K Mit Button neue Klasse öffnen Allgemeine Java-Themen 9
J Reflection mit Klasse und Subklasse Allgemeine Java-Themen 11
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
magdaStone Logikproblem Umschalten von booleans in anderer Klasse Allgemeine Java-Themen 7
P mehrer Verschiedene Objekte in einer Klasse erstellen. Allgemeine Java-Themen 4
A Java Klasse auf Tomcat während der Laufzeit austauschen Allgemeine Java-Themen 1
C Abstrakte Klasse, lokale Variable-Problem Allgemeine Java-Themen 1
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
Messoras Klassen Sämtliche Variablen einer Klasse übernehmen Allgemeine Java-Themen 6
H Methoden Methode 'updateItem' der Klasse 'TreeCell' Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben