I tried to add a new field to an existing feature class using ArcObjects and Java. This is the code:
IFeatureClass FcTes=sdeConnexion.connectionSDE().openFeatureClass("name of feature class");
IField testField=new Field();
IFieldEdit testField2=(IFieldEdit2)testField;
testField2.setName("symbol1");
testField2.setAliasName("symbol1");
FeatureClass FC=new FeatureClass(FcTes);
ISchemaLock schemaLock = (ISchemaLock)FC;
try{
schemaLock.changeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);
FcTes.addField(testField2);
}catch(Exception e){
e.printStackTrace();
}
finally{
schemaLock.changeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
}
when I executed it, this exception fired:
AutomationException: 0x80040220 - The application is not licensed to create or modify schema for this type of data in 'Esri GeoDatabase' at com.esri.arcgis.interop.NativeObjRef.nativeVtblInvokeNative(Native Method) at com.esri.arcgis.interop.NativeObjRef.a(Unknown Source) at com.esri.arcgis.interop.NativeObjRef.a(Unknown Source) at com.esri.arcgis.interop.Dispatch.vtblInvoke(Unknown Source) at com.esri.arcgis.geodatabase.IClassProxy.addField(Unknown Source) at travaux.ConnectGeoDB2.main(ConnectGeoDB2.java:58)
Can anyone see what I did wrong?
I have ArcGIS 10.2 Advanced (Server and Desktop) and in my project I'm working with arcobject.jar of ArcGIS Server.
-
1Please edit the question to contain the version of ArcGIS and license level.Vince– Vince2015年10月10日 23:21:54 +00:00Commented Oct 10, 2015 at 23:21
-
I'have arcgis 10.2 advanced(server and desktop) and in my project i'm working with arcobject.jar of arcgis serverahlemg– ahlemg2015年10月12日 13:12:14 +00:00Commented Oct 12, 2015 at 13:12
-
Please edit the question to contain critical details. It's not fair to those who would answer your question to need to mine the comments for this information.Vince– Vince2015年10月12日 13:31:48 +00:00Commented Oct 12, 2015 at 13:31
-
As the answer below indicates, you must tell ArcObjects about you license(s).Vince– Vince2015年10月12日 13:34:02 +00:00Commented Oct 12, 2015 at 13:34
2 Answers 2
Even if your ArcGIS license supports this particular feature (let's say you have an advanced license) you still need to specify the license level in your ArcEngine code. For example:
RuntimeManager.BindLicense(ProductCode.EngineOrDesktop, LicenseLevel.GeodatabaseUpdate);
It seems like a licence issue. Please have a look at the following link: http://resources.esri.com/help/9.3/ArcGISengine/java/doc/06e45adf-ad58-4c3b-8f79-4300a1ce045d.htm