Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用App Engine的本地计算机上的自定义数据存储位置_Java_Android_Google App Engine - Fatal编程技术网

Java 使用App Engine的本地计算机上的自定义数据存储位置

Java 使用App Engine的本地计算机上的自定义数据存储位置,java,android,google-app-engine,Java,Android,Google App Engine,我正在androidstudio中开发appengine应用程序,并在我的本地机器(带有本地数据存储)上进行测试。这是一款基于Java的应用程序。每次我重新运行服务器时,本地数据存储都会被清除。我已经为开发人员找到了几种解决方案,但似乎没有针对Java的解决方案 Android Studio仅允许更改: 战争道路 虚拟机参数 服务器地址 服务器端口 我尝试过使用VM参数,但这些参数是针对Java VM的,显然不是针对应用服务器的。有没有一种方法可以跨服务器重启持久化本地数据存储?如果我可以直

我正在androidstudio中开发appengine应用程序,并在我的本地机器(带有本地数据存储)上进行测试。这是一款基于Java的应用程序。每次我重新运行服务器时,本地数据存储都会被清除。我已经为开发人员找到了几种解决方案,但似乎没有针对Java的解决方案

Android Studio仅允许更改:

  • 战争道路
  • 虚拟机参数
  • 服务器地址
  • 服务器端口

我尝试过使用VM参数,但这些参数是针对Java VM的,显然不是针对应用服务器的。有没有一种方法可以跨服务器重启持久化本地数据存储?如果我可以直接从Android Studio运行此配置,那就太完美了。

经过几个小时的搜索,我终于找到了如何使用用户定义的文件作为本地存储。不幸的是,它不能直接从Android Studio运行,服务器必须从终端运行

以下是Java的dev appserver的参数:

Usage: <dev-appserver> [options] <app directory>
Options:
 --help, -h                 Show this help message and exit.
 --sdk_root=DIR             Overrides where the SDK is located.
 --server=SERVER            The server to use to determine the latest
  -s SERVER                   SDK version.
 --address=ADDRESS          The address of the interface on the local machine
  -a ADDRESS                  to bind to (or 0.0.0.0 for all interfaces).
 --port=PORT                The port number to bind to on the local machine.
  -p PORT
 --disable_update_check     Disable the check for newer SDK versions.
 --generated_dir=DIR        Set the directory where generated files are created.
 --default_gcs_bucket=NAME  Set the default Google Cloud Storage bucket name.
 --jvm_flag=FLAG            Pass FLAG as a JVM argument. May be repeated to
                              supply multiple flags.
用法:[选项] 选项: --帮助,-h显示此帮助消息并退出。 --sdk_root=DIR覆盖sdk所在的位置。 --服务器=用于确定最新版本的服务器 -s服务器SDK版本。 --地址=本地计算机上接口的地址 -要绑定到的地址(或所有接口的0.0.0.0)。 --端口=要在本地计算机上绑定到的端口号。 -p端口 --禁用更新检查禁用对较新SDK版本的检查。 --generated_dir=dir设置创建生成文件的目录。 --default\u gcs\u bucket=NAME设置默认的Google云存储bucket名称。 --jvm_flag=将Pass flag标记为jvm参数。可重复至 提供多个标志。 您必须更改
生成的\u dir
参数。要直接从终端运行dev server,有一个非常好的命令:

/usr/lib/jvm/default java/bin/java -javaagent:$HOME/.gradle/appengine-sdk/appengine-java-sdk-1.9.9/lib/agent/appengine-agent.jar -Xbootclasspath/p:$HOME/.gradle/appengine-sdk/appengine-java-sdk-1.9.9/lib/override/appengine-dev-jdk-overrides.jar -Didea.launcher.port=7533-Didea.launcher.bin.path=/opt/android studio/bin-Dfile.encoding=UTF-8-classpath$HOME/.gradle/appengine-sdk/appengine-java-sdk-1.9.9/lib/appengine工具api.jar:/opt/android studio/lib/idea_rt.jar com.intellij.rt.execution.application.AppMain com.google.appengine.tools.development.DevAppServerMain --地址=0.0.0.0--port=8080--generated_dir=$HOME/sandbox/$HOME/app/backend/build/app

我已将
generated_dir
参数更改为
--generated_dir=$HOME/sandbox/


请注意,您必须提供Android Studio路径和应用程序引擎SDK版本。对于我的工作站,它是
/opt/android studio
appengine-java-sdk-1.9.9

本地数据存储被清除,因为默认情况下它位于应用程序分解的war目录中(每次构建时都会将其全部删除)

实际上,您不必从终端手动运行dev服务器,只需将VM arg添加到appengine运行配置中,即可在另一个位置找到数据存储:

-Ddatastore.backing_store="/path/to/datastore/file/location/local_db.bin"

(解决方案位于:)

正如Arjan所说,您可以使用
-Ddatastore.backing\u store

如果您使用Android Studio 1.5,请修改
build.gradle
。在
appengine
上放置参数
jvmFlags
。例如:

 appengine {
  downloadSdk = true
  appcfg {
    oauth2 = true
  }
  jvmFlags = ["-Ddatastore.backing_store=\"D:/temp/local_db.bin\""]
}

我使用的是java appengine sdk 1.9.12,argumento不再存在:(……你现在是怎么做到的?我已经检查了1.9.14版,它运行得很好。你确定1.9.12版中不存在这些参数吗?非常感谢你的回复!我再次检查了我所做的,我意识到如果我把--generated_dir放在最后,它将不起作用!!!!谢谢!我会在其他问题上粘贴这篇文章的链接!有办法吗不知何故要将此标志添加到渐变中?由于年龄的原因,该问题已被关闭。按照指示,我已在此处重新提交:对我来说非常有用(在重新启动AndroidStudio之后,这可能是有意义的)。