Эмулятор облачного хранилища данных Google не запускаетсяJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Эмулятор облачного хранилища данных Google не запускается

Сообщение Anonymous »

До сих пор я использовал следующую команду для тестирования приложения GAE в своей локальной среде разработки:

Код: Выделить всё

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
и в нем есть данные. Я могу перейти по адресу http://localhost:8190/_ah/admin, а также просмотреть созданные таким образом данные.
Теперь я хотел бы:
  • запустить эмулятор хранилища данных как отдельный процесс
  • подключиться к нему моему приложению
  • использовать данные, созданные в результате более ранних исполнений
Поэтому я скопировал 2 файла: файл local_db.bin и datastore-indexes-auto.xml из E:\myProj\localAppData в E:\myNewApp\src\main\webapp\WEB-INF \appengine-generated
Чтобы запустить эмулятор хранилища данных (версия Java 17), я использую эту команду:

Код: Выделить всё

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/
При переходе по адресу http://localhost:8081/ я получаю «ОК». Но когда я запускаю приложение (которое теперь развернуто в Tomcat как военный файл), оно не может прочитать какие-либо данные.
Из журнала я понимаю, что ошибочная строка:

Код: Выделить всё

java.lang.ClassNotFoundException: com.google.appengine.api.datastore.dev.LocalDatastoreService$Profile. Но тогда как передать этот класс/банку, содержащую этот класс, команде?
Как мне решить эту проблему?
Если это имеет какое-либо значение помогите, это моя мотивация: на данный момент это приложение использует Java на стороне сервера. Я создаю файл .war и могу запустить его локально (как упоминалось выше), а также развернуть и запустить его в Google App Engine. Все это работает.
Однако при нынешних обстоятельствах война разворачивается на «предоставленном» экземпляре Jetty. Вполне вероятно, что в будущем от этого «обеспечения» Jetty будет покончено.
Поэтому я хотел бы создать военный файл (как я делаю сейчас). Но вместо того, чтобы развертывать этот файл войны в GAE, я хотел бы создать образ докера с *nix и Tomcat, развернуть свою войну на этом Tomcat, а затем продолжить доступ к моим данным, которые уже находятся в хранилище данных.
Я пытаюсь смоделировать этот стек в своей локальной среде разработки, и для этого крайне важно запустить и запустить эмулятор локального хранилища данных.
Кто-нибудь поможет? Пожалуйста.
Фолл добавлен 14 января 25 г.:
Вот шаги, которые я использую:
(1) В командном окне 1
gcloud emulators datastore start --data-dir="E:\myNewApp\src\main\webapp"
(2) В командном окне 2

Код: Выделить всё

cd E:\myNewApp\src\main\webapp

Код: Выделить всё

gcloud beta emulators datastore env-init > set_vars.cmd
(3) В командном окне 3

Код: Выделить всё

cd E:\myNewApp\src\main\webapp

Код: Выделить всё

set_vars.cmd

Код: Выделить всё

startup.bat
gcloud beta emulators datastore start --data-dir="E:\hospEZ\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:\hospEZ\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:\hospEZ\src\main\webapp
[datastore] Jan 16, 2025 8:08:35 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 16, 2025 8:08:35 AM com.google.cloud.datastore.emulator.CloudDatastore$StartAction apply
[datastore] INFO: Running CLOUD_DATASTORE emulator.
[datastore] Jan 16, 2025 8:08:35 AM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub
[datastore] INFO: Local Datastore initialized:
[datastore] Type: High Replication
[datastore] Storage: E:\hospEZ\src\main\webapp\WEB-INF\appengine-generated\local_db.bin
[datastore] WARNING: An illegal reflective access operation has occurred
[datastore] WARNING: Illegal reflective access by com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub$BackwardsCompatibleInputStream (file:/E:/Google/Cloud%20SDK/google-cloud-sdk/platform/cloud-datastore-emulator/CloudDatastore.jar) to field java.io.ObjectStreamClass.name
[datastore] WARNING: Please consider reporting this to the maintainers of com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub$BackwardsCompatibleInputStream
[datastore] WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
[datastore] WARNING: All illegal access operations will be denied in a future release
[datastore] Jan 16, 2025 8:08:36 AM com.google.cloud.datastore.emulator.impl.LocalDatastoreFileStub load
[datastore] INFO: Time to load datastore: 673 ms
[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/
[/code]
Но приложению не удается прочитать данные из этой базы данных.
Поэтому возникают новые вопросы:
  • несмотря на то, что база данных успешно считывается и записывается в нее с помощью java_dev_appserver.cmd, почему она не читает и не читает ту же базу данных при запуске с помощью запуска хранилища данных бета-эмуляторов gcloud ?
  • почему Начало хранилища данных бета-эмуляторов gcloud выдает исключение, когда JAVA_HOME указывает на Java 17, и не выдает исключение, когда JAVA_HOME указывает на Java 11?
  • Даже если JAVA_HOME не создает никаких исключений указывает на Java 11, почему мое приложение не может прочитать какие-либо данные?
  • За это предупреждение: произошла незаконная операция рефлексивного доступа Меня спрашивают связаться с сопровождающими. Есть идеи, к кому мне обратиться.
Прошу кого-нибудь помочь.

Подробнее здесь: https://stackoverflow.com/questions/793 ... s-to-start
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Эмулятор облачного хранилища данных Google не запускается
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Эмулятор облачного хранилища данных Google не запускается
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Эмулятор облачного хранилища данных Google не запускается
    Anonymous » » в форуме JAVA
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Эмулятор облачного хранилища данных Google не запускается
    Anonymous » » в форуме JAVA
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Ошибка при загрузке файлов FAISS и Pickle из облачного хранилища Google в Python: ошибка атрибута «fields_set»
    Anonymous » » в форуме Python
    0 Ответы
    34 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»