Ich versuche, eine benutzerdefinierte Java-Komponente für oracle-ucm zu erstellen. jedochNoClassDefFoundError mit einer benutzerdefinierten Java-Komponente in WCC
Es installiert currectly, wenn ich den Code ausführen, erhalte ich:
System code execution error. Unable to create service. java.lang.NoClassDefFoundError: com/lowes/content/edam/massMetaDataUpdate/service/ServiceApplication.
component.hda Datei sieht so aus:
<?hda version="11.1.1.8.0PSU-2015-01-08 07:49:21Z-r123144" jcharset="UTF8" encoding="utf-8"?>
@Properties LocalData
ComponentName=LowesMassMetadataUpdater
blDateFormat=M/d{/yy}{ h:mm[:ss]{ a}}!mAM,PM!tAmerica/New_York
classpath=$COMPONENT_DIR/classes
hasPreferenceData=0
libpath=$COMPONENT_DIR/libs
preventAdditionalComponentDowngrade=0
version=2016_06_08(build 1)
@end
Als Referenz der Anfang meiner Dienstklasse wie so aussieht:
Paket com.lowes.content.edam.massMetaDataUpdate.service;
import intradoc.server.Service;
public class MMUService extends Service
{ //this is the line that is throwing the error.
private ServiceApplication app = new ServiceApplication();
/** Default Constructor - Does Nothing */
public MMUService() { }
//rest of class omitted for brevity
}
Meine Komponente Start in der MMUService Klasse konfiguriert, die im selben Paket wie die Klasse ist, die nicht gefunden werden kann. Beide Klassendateien befinden sich direkt im selben Ordner. Warum also kann es die anfängliche Serviceklasse finden, aber keine enthaltene Hilfsklasse aus demselben Paket?
Erweiterte Build-Einstellungen von Component Wizard
Alle Blank ausgenommen:
Kundenspezifische Klasse Pfad:$COMPONENT_DIR/classes
Benutzerdefinierte Bibliothek Pfad:$COMPONENT_DIR/libs
Warum ein ** ServiceHandler ** anstelle eines ** Service **? Ich erstelle eine Komponente, um eine hochgeladene Excel-Datei (kein eingechecktes Inhaltselement) aufzunehmen und den Inhalt der Datei zu verarbeiten, um eine Reihe von Metadaten-Aktualisierungen durchzuführen. 1 Update pro Zeile in der Datei. Der Dienst, den ich baue, soll den Großteil der Arbeit ausführen, die ich gerade beschrieben habe. – Raystorm
'> Serviceklassen sind einfach zu erstellen, aber nicht sehr flexibel. Um es flexibler zu machen, benötigen wir ein ServiceHandler-Objekt. Eine Servicedefinition kann auf Methoden von nur einer Service-Klasse verweisen. Diese Dienstklasse kann jedoch so konfiguriert werden, dass mehrere Diensthandler vorhanden sind, sodass der Code in einem Diensthandler portabler ist und für Dienste freigegeben werden kann. Der Code ist fast genau der gleiche, aber es erfordert etwas mehr Konfiguration. –
Gibt es ein bestimmtes Muster oder eine Namenskonvention, der die Installations-ID folgen soll? – Raystorm