Код: Выделить всё
e:
Код: Выделить всё
cd E:\myProj\myWebApp
Код: Выделить всё
"E:\Google\Cloud SDK\google-cloud-sdk\bin\java_dev_appserver.cmd" --generated_dir="E:\myProj\localAppData" --address=0.0.0.0 --port=8190 "E:\myProj\myWebApp\target\myProjWebApp-1.0.0"
У меня есть файл local_db.bin и файл datastore-indexes-auto.xml в папке:
Код: Выделить всё
E:\myProj\localAppData
Теперь я хотел бы:
- запустить эмулятор хранилища данных как отдельный процесс
- подключить к нему мое приложение
- использовать данные, созданные в результате более ранних исполнений
Чтобы запустить эмулятор хранилища данных, я использую эту команду:
Код: Выделить всё
e:
Код: Выделить всё
cd E:\myNewApp\src\main\webapp
Код: Выделить всё
gcloud beta emulators datastore start --data-dir="E:\myNewApp\src\main\webapp"
Код: Выделить всё
E:\myNewProj\src\main\webapp>gcloud beta emulators datastore start --data-dir="E:\myNewProj\src\main\webapp"
WARNING: Cloud Datastore Emulator support for Java JRE version 11 will be dropped after gcloud command-line tool release 508.0.0. Please upgrade to Java JRE version 21 or higher to continue using the latest Cloud Datastore Emulator.
WARNING: Reusing existing data in [E:\myNewProj\src\main\webapp].
Executing: cmd /c E:\Google\Cloud SDK\google-cloud-sdk\platform\cloud-datastore-emulator\cloud_datastore_emulator.cmd start --host=localhost --port=8081 --store_on_disk=True --allow_remote_shutdown --consistency=0.9 E:\myNewProj\src\main\webapp
[datastore] Jan 13, 2025 11:28:51 AM com.google.cloud.datastore.emulator.CloudDatastore$FakeDatastoreAction$9 apply
[datastore] INFO: Provided --allow_remote_shutdown to start command which is no longer necessary.
[datastore] Jan 13, 2025 11:28:51 AM com.google.cloud.datastore.emulator.CloudDatastore$StartAction apply
[datastore] INFO: Running CLOUD_DATASTORE emulator.
[datastore] Jan 13, 2025 11:28:51 AM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub
[datastore] INFO: Local Datastore initialized:
[datastore] Type: High Replication
[datastore] Storage: E:\myNewProj\src\main\webapp\WEB-INF\appengine-generated\local_db.bin
[datastore] Jan 13, 2025 11:28:52 AM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub$BackwardsCompatibleInputStream readClassDescriptor
[datastore] INFO: Error converting backwards compatible class: Unable to make field private java.lang.String java.io.ObjectStreamClass.name accessible: module java.base does not "opens java.io" to unnamed module @7bab3f1a
[datastore] Jan 13, 2025 11:28:52 AM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub$BackwardsCompatibleInputStream readClassDescriptor
[datastore] INFO: Error converting backwards compatible class: Unable to make field private java.lang.String java.io.ObjectStreamClass.name accessible: module java.base does not "opens java.io" to unnamed module @7bab3f1a
[datastore] Jan 13, 2025 11:28:52 AM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub load
[datastore] INFO: Failed to load from the backing store, E:\myNewProj\src\main\webapp\WEB-INF\appengine-generated\local_db.bin
[datastore] java.lang.ClassNotFoundException: com.google.appengine.api.datastore.dev.LocalDatastoreService$Profile
[datastore] at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
[datastore] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
[datastore] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)
[datastore] at java.base/java.lang.Class.forName0(Native Method)
[datastore] at java.base/java.lang.Class.forName(Class.java:467)
[datastore] at java.base/java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:773)
[datastore] at java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:2034)
[datastore] at java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1898)
[datastore] at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2224)
[datastore] at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733)
[datastore] at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:509)
[datastore] at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:467)
[datastore] at java.base/java.util.HashMap.readObject(HashMap.java:1552)
[datastore] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[datastore] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[datastore] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[datastore] at java.base/java.lang.reflect.Method.invoke(Method.java:569)
[datastore] at java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1100)
[datastore] at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2423)
[datastore] at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257)
[datastore] at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733)
[datastore] at java.base/java.io.ObjectInputStream$FieldValues.(ObjectInputStream.java:2606)
[datastore] at java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2457)
[datastore] at java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2257)
[datastore] at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1733)
[datastore] at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:509)
[datastore] at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:467)
[datastore] at com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub.load(LocalDatastoreFileStub.java:637)
[datastore] at com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub.startInternal(LocalDatastoreFileStub.java:151)
[datastore] at com.google.cloud.datastore.emulator.impl.BaseLocalDatastore$3.run(BaseLocalDatastore.java:432)
[datastore] at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
[datastore] at com.google.cloud.datastore.emulator.impl.BaseLocalDatastore.start(BaseLocalDatastore.java:428)
[datastore] at com.google.cloud.datastore.emulator.DatastoreEmulator.start(DatastoreEmulator.java:37)
[datastore] at com.google.cloud.datastore.emulator.CloudDatastore$1.start(CloudDatastore.java:656)
[datastore] at com.google.cloud.datastore.emulator.CloudDatastore$StartAction.apply(CloudDatastore.java:566)
[datastore] at com.google.appengine.tools.util.Parser$ParseResult.applyArgs(Parser.java:58)
[datastore] at com.google.cloud.datastore.emulator.CloudDatastore.run(CloudDatastore.java:769)
[datastore] at com.google.cloud.datastore.emulator.CloudDatastore.main(CloudDatastore.java:727)
[datastore]
[datastore] API endpoint: http://localhost:8081
[datastore] If you are using a library that supports the DATASTORE_EMULATOR_HOST environment variable, run:
[datastore]
[datastore] export DATASTORE_EMULATOR_HOST=localhost:8081
[datastore]
[datastore] Dev App Server is now running.
[datastore]
[datastore] The previous line was printed for backwards compatibility only.
[datastore] If your tests rely on it to confirm emulator startup,
[datastore] please migrate to the emulator health check endpoint (/). Thank you!
[datastore] The health check endpoint for this emulator instance is http://localhost:8081/
Из журнала я понимаю, что ошибочная строка:
java.lang.ClassNotFoundException: com.google.appengine.api.datastore.dev.LocalDatastoreService$Profile. Но тогда как передать этот класс/банку, содержащую этот класс, команде?
Как мне решить эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/793 ... s-to-start