flex+lcds调用java类的问题
我按照教程配置的lcds,如果是简单的比如
package com.test;
public class FirstJavaClass {
public String sayHello(String str){
return "你说的是:"+str;
}
}
就不会出错,而我要是把这个类改成
package com.test;
import java.util.Vector;
import java.io.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.util.*;
import com.esri.sde.sdk.client.SDEPoint;
import com.esri.sde.sdk.client.SeConnection;
import com.esri.sde.sdk.client.SeCoordinateReference;
import com.esri.sde.sdk.client.SeException;
import com.esri.sde.sdk.client.SeInsert;
import com.esri.sde.sdk.client.SeLayer;
import com.esri.sde.sdk.client.SeRow;
import com.esri.sde.sdk.client.SeShape;
import com.esri.sde.sdk.client.*;
public class FirstJavaClass {
/**
* @param args
*/
public void sdeInsert() {
// TODO Auto-generated method stub
SeConnection conn = null;
String server = "A10447859E2147D";
int instance = 5151;
String database = "";
String user = "sde";
String password = "sde";
try {
conn = new SeConnection(server, instance, database, user, password);
Vector layerList = conn.getLayers();
for( int index = 0 ; index < layerList.size() ; index++ )
{
SeLayer layer = (SeLayer)layerList.elementAt(index);
long long_number = 922337203685477580L;
/*
* Define the names of the columns that data is to be inserted into.
*/
String columns[] = new String[5];
// columns[0] = new String("OBJECT_ID"); // LONGINT column
columns[0] = new String("CROSSID"); // TEXT column
columns[1] = new String("CHANNELID"); // TEXT column
columns[2] = new String("ROTATION"); // TEXT column
columns[3] = new String("SYMINDEX"); // TEXT column
columns[4] = layer.getSpatialColumn(); // Shape column
SeInsert insert = null;
insert = new SeInsert(conn);
insert.intoTable(layer.getName(),columns);
insert.setWriteMode(true);
SeCoordinateReference coordref = layer.getCoordRef();
SeShape shape = new SeShape(coordref);
int numPts = 1;
SDEPoint[] ptArray = new SDEPoint[numPts];
ptArray[0] = new SDEPoint(126.643207,45.739088);
shape.generatePoint(numPts, ptArray);
SeRow row1 = insert.getRowToSet();
System.out.println("row.getNumColumns()="+row1.getNumColumns());
System.out.println(row1.getColumnDef(0));
System.out.println(row1.getColumnDef(1));
System.out.println(row1.getColumnDef(2));
System.out.println(row1.getColumnDef(3));
System.out.println(row1.getColumnDef(4));
System.out.println(row1.getColumnDef(5));
// System.out.println(row1.getColumnDef(6));
// row1.setLong(0,long_number);
row1.setNString(0,"fdfdfdfd");
row1.setNString(1,"fdsafsafas");
row1.setNString(2,"fdsafas");
row1.setNString(3,"fdsaas");
row1.setShape(4,shape);
//Insert
insert.execute();
insert.close();
System.out.println("\tinserted");
} //End for
}catch (SeException e) {
e.printStackTrace();
}
}
}
就会报[LCDS]Error instantiating application scoped instance of type 'com.test.FirstJavaClass' for destination 'FirstJavaClassRemoteObject'.错误,我估计是用到的jar包的问题,程序找不到这些包的位置,可我已经把它导入了,是concurrent.jar,icu4j_3_2.jar,jpe_sdk.jar,jsde_sdk.jar这四个包,能不能告诉我怎么放置这几个包才能解决这个错误啊?
[解决办法]
你说“我估计是用到的jar包的问题,程序找不到这些包的位置”
这个java文件能编译通过吧?
还有这个错误是进入sdeInsert()方法之前还是之后出的?
[解决办法]
不要使用LCDS了
使用Blazeds吧
[解决办法]
参考这里,看是不是有帮助
http://corlan.org/2008/06/05/creating-a-combined-flexjava-project-in-flex-builder-wo-lcdsblazeds/
http://www.joshuaostrom.com/2009/09/02/debug-server-client-lcds-java-helloworld-in-flex-builder/
[解决办法]
学习一下!
[解决办法]
jf~~~~~~~~~~~~~~~