-
我使用下面的代碼在用戶定義的Java類:
//STEP 1. Import required packages import java.sql.*; import org.pentaho.di.core.database.*; public class JDBCExample { // JDBC driver name and database URL static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; static final String DB_URL ="jdbc:mysql://localhost:1111/mysql"; // Database credentials static final String USER = "USER"; static final String PASS = "PASS"; public static void main(String[] args) { Connection conn = null; Statement stmt = null; try{ //STEP 2: Register JDBC driver Class.forName("com.mysql.jdbc.Driver"); //STEP 3: Open a connection System.out.println("Connecting to a selected database..."); conn = DriverManager.getConnection(DB_URL, USER, PASS); System.out.println("Connected database successfully..."); //STEP 4: Execute a query System.out.println("Creating statement..."); stmt = conn.createStatement(); String sql = "select id,sorname,src_databasetype,src_databasename from table"; ResultSet rs = stmt.executeQuery(sql); //STEP 5: Extract data from result set while(rs.next()){ //Retrieve by column name int id = rs.getInt("id"); String sorname = rs.getString("sorname"); String src_databasetype = rs.getString("src_databasetype"); String src_databasename = rs.getString("src_databasename"); //Display values System.out.print("ID: " + id); System.out.print(", sorname: " + sorname); System.out.print(", src_databasetype: " + src_databasetype); System.out.println(", src_databasename: " + src_databasename); } rs.close(); }catch(SQLException se){ //Handle errors for JDBC se.printStackTrace(); }catch(Exception e){ //Handle errors for Class.forName e.printStackTrace(); }finally{ //finally block used to close resources try{ if(stmt!=null) conn.close(); }catch(SQLException se){ }// do nothing try{ if(conn!=null) conn.close(); }catch(SQLException se){ se.printStackTrace(); }//end finally try }//end try System.out.println("Goodbye!"); }//end main }//end JDBCExample
運行通過命令的代碼提示其工作正常
但是在單獨運行步驟(在PDI中)時出現錯誤: 非抽象類「Processor」必須實現方法「boolean org.pent aho.di.trans.steps.userdefinedjavaclass.TransformClassBase.processRow(org.pentaho.di.trans.step.StepMetaInterface, org.pentaho.di.trans.step.StepDataInterface)拋出 org.pentaho.di.core.exception .KettleException」
0
A
回答
2
對於UDJC,我想,而不是把代碼中的主要方法,你需要把它放在processRow()。
而不是使用 - 公共靜態無效的主要(字串[] args) 使用 - 公共布爾processRow(StepMetaInterface SMI,StepDataInterface SDI)拋出KettleException
我仍然持懷疑態度,如果它仍然會作爲工作我不明白你想用這個代碼做什麼。
相關問題
- 1. 在PDI勺子步驟(用戶定義的java類)HTML抓取
- 2. 黃瓜不識別定義的步驟「未定義的步驟」
- 3. 未定義的步驟定義黃瓜
- 4. 黃瓜 - Javascript的調用登錄步驟定義之前其他步驟定義
- 5. 黃瓜:未定義步驟雖然步驟被定義
- 6. 谷歌地圖API方向用戶定義的步驟
- 7. 如何讓多行步驟定義調用其他多行步驟定義
- 8. 自定義步驟UISlider
- 9. 黃瓜步驟未定義
- 10. 同一步驟定義
- 11. 步驟定義不確認
- 12. 使用setDate用戶定義的類.. Java
- 13. Windows Phone Slider的自定義步驟
- 14. SpecFlow的功能範圍步驟定義?
- 15. coffeescript的自定義預處理步驟?
- 16. specflow的動態步驟定義匹配
- 17. 使我的步驟定義更漂亮
- 18. 創建自定義視圖的步驟
- 19. 核心黃瓜的步驟定義
- 20. Rails的黃瓜步驟定義
- 21. 貝哈特預定義的步驟
- 22. Behat - 未定義的功能步驟
- 23. 下拉列表的步驟定義
- 24. 在步驟定義類中包含非步驟方法是否可以接受?
- 25. 定義BinarySearch的用於用戶定義的類中的Java
- 26. 黃瓜預定義步驟用法
- 27. 使用戶遵循特定步驟
- 28. 垂直數據表的Java Cucumber步驟定義
- 29. 在不同的java文件中構建Cucumber JVM步驟定義
- 30. Java用戶定義類型的數組
錯誤不是來自您在過帳中顯示的代碼段。但是在一個名爲'Processor'的類中,我相信它來自同一個包org.pentaho.di.trans.steps.userdefinedjavaclass。它沒有實現從父類繼承的抽象方法processRow。 –
我應該怎麼做......我沒有使用processRow – user3374000
但是,當你擴展父處理器抽象類時,你必須**從父類實現所有抽象方法*,至少使用默認功能。 –