Android Db4oClientServer可以';t打开服务器
嘿,我是一个新手,几乎我在db4o中遇到了问题。 当我使用Android Db4oClientServer可以';t打开服务器,android,db4o,Android,Db4o,嘿,我是一个新手,几乎我在db4o中遇到了问题。 当我使用 public static void main(String[] args) { ServerConfiguration configuration= Db4oClientServer.newServerConfiguration(); configuration.common().allowVersionUpdates(true); co
public static void main(String[] args) {
ServerConfiguration configuration=
Db4oClientServer.newServerConfiguration();
configuration.common().allowVersionUpdates(true);
configuration.common().activationDepth(4);
try{
server=Db4oClientServer.openServer(
configuration,"test",0);
System.out.println("It's ok");
}catch(Exception e){
System.out.println(e.toString());
}
}
只是一个简单的java文件。它可以正常工作。(我没有名为“test”的文件)。它可以帮助我创建测试文件。但是当我在android项目中使用相同的代码时
private ServerDDBB(){
try{
if(QSLog.DEBUG_I)
QSLog.i(CLASS_NAME,"Before to open the DDBB");
ServerConfiguration configuration=
Db4oClientServer.newServerConfiguration();
configuration.common().allowVersionUpdates(true);
configuration.common().activationDepth(DEEP);
try{
server=Db4oClientServer.openServer(
configuration,"ddbb",0);
}catch(Exception e){
Log.e("Can't pass the openServer",e.toString());
}
if(server==null)
if(QSLog.DEBUG_W)
QSLog.w(CLASS_NAME, "Serer Null");
}catch(Exception e){
if (QSLog.DEBUG_E)QSLog.e("hey", ExceptionUtils.exceptionTraceToString(
e.toString(),
e.getStackTrace()));
}
}
它提示我有一个IO异常
这是我的错误警告:com.db4o.io.RandomAccessFileFactory.newRandomAccessFile(RandomAccessFileFactory.java:26)com.db4o.io.FileStorage$FileBin.(FileStorage.java:43)com.db4o.io.FileStorage.open(FileStorage.java:22)com.db4o.io.io.io.StorageDecorator.open(StorageDecorator.java:27)com.db4o.io.CachingStorage.open(CachingStorage.java:52)COMP.java 4Objist.Objist.ObjistCult.OpenIMPL(IOAdToDeCopyBase.java:56)COM.Db4O..No.ObjultCuleBase$ 1 . Run(ObjutCaseBase.java:134)COM .d4o.Fask.DeaMICROVALATION.(动态变量.java:47)COM.D4O..Fase.环境(RunUnand)(环境:Java:28)com.db4o.internal.ObjectContainerBase.withEnvironment(ObjectContainerBase.java:155)com.db4o.internal.ObjectContainerBase.open(ObjectContainerBase.java:125)com.db4o.internal.IoAdaptedObjectContainer.java:35)com.db4o.internal.ObjectContainerFactory.openObjectContainer(ObjectContainerFactory.java:18)com.db4o.db4o.openFile(db4o.java:224)com.db4o.cs.internal.config.StandardClientServerFactory.openServer(StandardClientServerFactory.java:35)com.db4o.cs.Db4oClientServer.openServer(Db4oClientServer.java:52)com.hlh.ddbb.ServerDDBB.(ServerDDBB.java:37)com.hlh.ddbb.ServerDDBB.ServerDDBB.createInstance(ServerDDBB.java:84)com.hlh.ddbb.ServerDDBB.getServer(ServerDDBB.java:78)com.hlh.ddbb.ClientDDBB.(ClientDDBB.java:20)com.hlh.SettingsTab.initActivity(SettingsTab.java:196)com.hlh.SettingsTab.onCreate(SettingsTab.java:91)android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)android.app.ActivityThread.access$2200(ActivityThread.java:119)android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)android.os.Handler.dispatchMessage(Handler.java:99)android.os.Looper.java:123)android.app.ActivityThread.main(ActivityThread.java:4363)java.lang.reflect.Method.invokenactive(Native Method)java.lang.reflect.Method.invoke(Method.java:521)com.android.internal.os.zyoteinit$MethodAndArgsCaller.run(zyoteinit.java:860)com.android.internal.os.zyoteinit.main(zyoteinit.java:618)dalvik.system.NativeStart.main(本机方法)
任何回复都很好。看起来您只是尝试使用常规文件名。在Android中,您需要将数据库存储在一个数据库中,您可以在其中访问:
String filePath = this.getFilesDir() + "/android.db4o";
final EmbeddedConfiguration config = Db4oEmbedded.newConfiguration();
config.common().add(new AndroidSupport());
ObjectContainer db = Db4oEmbedded.openFile(config,filePath);
顺便说一句,嵌入式客户端服务器不需要服务器jar。您可以使用以下常规命令打开新的会话容器:
ObjectContainer session = rootContainer.ext().openSession();
try {
// do the operations on the session-container
session.store(new Person("Joe"));
} finally {
// close the container. For example when the request ends
session.close();
}