2016-06-29 16 views
3

Ich versuche, ein ArrayList Objekt in einem benutzerdefinierten Java-Klasse-Objekt in Pentaho Kessel zu deklarieren. Ich versuche, einen einfachen Code innerhalb des User Defined Java Class:
Wie erstellt man ein ArrayList-Objekt in einer benutzerdefinierten Java-Klasse in Kettle?

import java.util.List; 
import java.util.ArrayList; 

List<String> where = new ArrayList<String>(); 

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException 
{  

    return true; 

} 

Aber wenn ich diese Klasse testen, ich erhalte eine Fehlermeldung:

Line 4, Column 6: Identifier expected

Was kann das Problem sein? Wenn ich die Zeile List<String> where = new ArrayList<String>(); auskommentieren, funktioniert der Code gut.

+1

Ich sehe nicht, wo Sie Ihre Klassendeklaration haben? –

+0

Es ist nicht notwendig, die Klasse in Kettles Schritt 'Benutzerdefinierte Java-Klasse' zu definieren. Kessel macht das bereits in seiner Umgebung, während er die Transformation ausführt. Wenn ich "private String where" statt "List where = new ArrayList () schreibe"; 'funktioniert der Code gut. –

Antwort

5

Wie auf der Pentaho wikiJanino erwähnt, unterstützt nicht Generics.

Another thing to note is that Janino, essentially a Java byte-code generator only supports a sub-set of the Java 1.5 specification. To see a complete list of the features and limitations, please go to the Janino homepage. At the time of writing the most apparent limitation is the absence of generics.

Also, sollten Sie eine einfache Liste wie folgt verwenden:

List where; 

statt Generika zu verwenden.

0

Dies war ein known issue bei forums.pentaho.com. Der integrierte Compiler verwendet keine Generika. Einfach machen eine Liste Objekt wie:

import java.util.List; 

List where; 

public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException 
{  

    return true; 

} 

keinen Fehler machen.