Faf client ошибка java

Tried to start FAF client and got this java startup error.
Log;

Exception in Application start method
java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: com.github.nocatch.NoCatchException: javafx.fxml.LoadException:
file:/D:/Program%20Dosyalar%c4%b1%20(x86)/Downlord’s%20FAF%20Client/lib/downlords-faf-client-0.10.7.jar!/theme/login.fxml

at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.github.nocatch.NoCatch.wrapException(NoCatch.java:61)
at com.github.nocatch.NoCatch.noCatch(NoCatch.java:53)
at com.github.nocatch.NoCatch.noCatch(NoCatch.java:34)
at com.faforever.client.theme.UiService.loadFxml(UiService.java:412)
at com.faforever.client.theme.UiService$$FastClassBySpringCGLIB$$2b0b2208.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
at com.faforever.client.theme.UiService$$EnhancerBySpringCGLIB$$d9340258.loadFxml(<generated>)
at com.faforever.client.main.MainController.enterLoggedOutState(MainController.java:389)
at com.faforever.client.main.MainController.display(MainController.java:371)
at com.faforever.client.FafClientApplication.showMainWindow(FafClientApplication.java:116)
at com.faforever.client.FafClientApplication.start(FafClientApplication.java:100)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)
... 1 more

Caused by: javafx.fxml.LoadException:
file:/D:/Program%20Dosyalar%c4%b1%20(x86)/Downlord’s%20FAF%20Client/lib/downlords-faf-client-0.10.7.jar!/theme/login.fxml

at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml/javafx.fxml.FXMLLoader.load(Unknown Source)
at com.github.nocatch.NoCatch.noCatch(NoCatch.java:49)
... 19 more

Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.reflect.Trampoline.invoke(Unknown Source)
at jdk.internal.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(Unknown Source)
at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(Unknown Source)
… 23 more
Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
at com.google.gson.Gson.fromJson(Gson.java:927)
at com.google.gson.Gson.fromJson(Gson.java:865)
at com.faforever.client.preferences.PreferencesService.getRemotePreferences(PreferencesService.java:351)
at com.faforever.client.login.LoginController.initialize(LoginController.java:150)
… 33 more
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:215)
… 37 more

Tried to start FAF client and got this java startup error.
Log;

Exception in Application start method
java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: com.github.nocatch.NoCatchException: javafx.fxml.LoadException:
file:/D:/Program%20Dosyalar%c4%b1%20(x86)/Downlord’s%20FAF%20Client/lib/downlords-faf-client-0.10.7.jar!/theme/login.fxml

at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.github.nocatch.NoCatch.wrapException(NoCatch.java:61)
at com.github.nocatch.NoCatch.noCatch(NoCatch.java:53)
at com.github.nocatch.NoCatch.noCatch(NoCatch.java:34)
at com.faforever.client.theme.UiService.loadFxml(UiService.java:412)
at com.faforever.client.theme.UiService$$FastClassBySpringCGLIB$$2b0b2208.invoke(<generated>)
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:684)
at com.faforever.client.theme.UiService$$EnhancerBySpringCGLIB$$d9340258.loadFxml(<generated>)
at com.faforever.client.main.MainController.enterLoggedOutState(MainController.java:389)
at com.faforever.client.main.MainController.display(MainController.java:371)
at com.faforever.client.FafClientApplication.showMainWindow(FafClientApplication.java:116)
at com.faforever.client.FafClientApplication.start(FafClientApplication.java:100)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$9(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runAndWait$11(Unknown Source)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$9(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(Unknown Source)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(Unknown Source)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(Unknown Source)
... 1 more

Caused by: javafx.fxml.LoadException:
file:/D:/Program%20Dosyalar%c4%b1%20(x86)/Downlord’s%20FAF%20Client/lib/downlords-faf-client-0.10.7.jar!/theme/login.fxml

at javafx.fxml/javafx.fxml.FXMLLoader.constructLoadException(Unknown Source)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(Unknown Source)
at javafx.fxml/javafx.fxml.FXMLLoader.load(Unknown Source)
at com.github.nocatch.NoCatch.noCatch(NoCatch.java:49)
... 19 more

Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at com.sun.javafx.reflect.Trampoline.invoke(Unknown Source)
at jdk.internal.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at javafx.base/com.sun.javafx.reflect.MethodUtil.invoke(Unknown Source)
at javafx.fxml/com.sun.javafx.fxml.MethodHelper.invoke(Unknown Source)
… 23 more
Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
at com.google.gson.Gson.fromJson(Gson.java:927)
at com.google.gson.Gson.fromJson(Gson.java:865)
at com.faforever.client.preferences.PreferencesService.getRemotePreferences(PreferencesService.java:351)
at com.faforever.client.login.LoginController.initialize(LoginController.java:150)
… 33 more
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:215)
… 37 more

  1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, — этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление

  2. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:

    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.

    С уважением, администрация форума Old-Games.RU

    Скрыть объявление

Статус темы:

Закрыта.
Статус темы:

Закрыта.
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.

    Скрыть объявление

It seems this is the critical part in the code:

protected Void call() throws Exception {
Objects.requireNonNull(url, «url has not been set»);
Path tempFile = Files.createTempFile(preferencesService.getCacheDirectory(), «mod», null);
logger.info(«Downloading mod {} to {}», url, tempFile);
updateTitle(i18n.get(«downloadingModTask.downloading», url));
Files.createDirectories(tempFile.getParent());
URLConnection urlConnection = url.openConnection();
int contentLength = urlConnection.getContentLength();

I don’t have much Java experience — but I do have some with other languages, and maybe all we need here is to use encode? https://www.geeksforgeeks.org/java-net-urlencoder-class-java/

I gave it a try in a repl, and as expected, the spaces are encoded, but not to «%20«s, instead they turned to «+«es. Which would be fine if the server conformed to url decoding standards, which it seems it doesn’t do, since:

  • http://content.faforever.com/mods/Supreme%20Economy%202.2.v0002.zip works, while
  • http://content.faforever.com/mods/Supreme+Economy+2.2.v0002.zip doesn’t work, gives 404.

Okay, so I’m onto a bit more hacky solution to do search and replace of white-spaces.

This might do the trick:

System.out.println(URLEncoder.encode(url).replaceAll("+", "%20"));

This way everything is encoded, and we give special consideration to whitespace to be %20 and not +.

Maybe I can try to send in a pull request based on this.

It seems this is the critical part in the code:

protected Void call() throws Exception {
Objects.requireNonNull(url, «url has not been set»);
Path tempFile = Files.createTempFile(preferencesService.getCacheDirectory(), «mod», null);
logger.info(«Downloading mod {} to {}», url, tempFile);
updateTitle(i18n.get(«downloadingModTask.downloading», url));
Files.createDirectories(tempFile.getParent());
URLConnection urlConnection = url.openConnection();
int contentLength = urlConnection.getContentLength();

I don’t have much Java experience — but I do have some with other languages, and maybe all we need here is to use encode? https://www.geeksforgeeks.org/java-net-urlencoder-class-java/

I gave it a try in a repl, and as expected, the spaces are encoded, but not to «%20«s, instead they turned to «+«es. Which would be fine if the server conformed to url decoding standards, which it seems it doesn’t do, since:

  • http://content.faforever.com/mods/Supreme%20Economy%202.2.v0002.zip works, while
  • http://content.faforever.com/mods/Supreme+Economy+2.2.v0002.zip doesn’t work, gives 404.

Okay, so I’m onto a bit more hacky solution to do search and replace of white-spaces.

This might do the trick:

System.out.println(URLEncoder.encode(url).replaceAll("+", "%20"));

This way everything is encoded, and we give special consideration to whitespace to be %20 and not +.

Maybe I can try to send in a pull request based on this.

I wanna make a new release of the application but when starting it it throws NoSuchMethodError

java.lang.NoSuchMethodError: com.sun.jna.Native.load(Ljava/lang/String;Ljava/lang/Class;Ljava/util/Map;)Lcom/sun/jna/Library;
    at com.sun.jna.platform.win32.Shell32.<clinit>(Shell32.java:45)
    at com.sun.jna.platform.win32.Shell32Util.getFolderPath(Shell32Util.java:54)
    at com.sun.jna.platform.win32.Shell32Util.getFolderPath(Shell32Util.java:71)
    at com.faforever.client.preferences.PreferencesService.<clinit>(PreferencesService.java:78)
    at com.faforever.client.FafClientApplication.main(FafClientApplication.java:55)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.base/java.lang.reflect.Method.invoke(Unknown Source)
    at com.exe4j.runtime.LauncherEngine.launch(LauncherEngine.java:85)
    at com.exe4j.runtime.WinLauncher.main(WinLauncher.java:94)
    at com.install4j.runtime.launcher.WinLauncher.main(WinLauncher.java:25)

Similar to
NoSuchMethodError using JNA User32 platform map
However I do have version 5.0.0 of both libaries.

It is about this project https://github.com/FAForever/downlords-faf-client it uses gradle as a build tool…

Also I decompiled the installed program and found the method that java claims is not present in the jna libary. Which I find super weird.

Also I check no other dependency has a dependency on jna.

But the thing that is the strangest is it work when I run it all from intelij (oracle jdk 10) but then if I build the installer(openjdk 10 on travis) it does not (same machine).

Also it worked before and we did not change anything about the code related to jna nor the library version. What might have changed is the openjdk version travis uses, but I can not see how that would be related.

Does anybody have an idea what might cause this….

This is the actual code that fails:

Paths.get(Shell32Util.getFolderPath(ShlObj.CSIDL_COMMON_APPDATA), "FAForever")

Even though I thik it is not the problem…

This is the jvm log https://drive.google.com/file/d/11RpxvFubYM7vCoAE-Kx_6EkIKADPQofE/view?usp=sharing

Of which this is probably the important part :

[3.689s][debug][class,resolve               ] com.sun.jna.Native java.lang.Object (super)
[3.689s][debug][class,resolve               ] com.sun.jna.Native com.sun.jna.Version (interface)
[3.689s][debug][class,resolve               ] com.sun.jna.platform.win32.Shell32 com.sun.jna.Native Shell32.java:45 (explicit)
[3.689s][debug][protectiondomain            ] Checking package access
[3.689s][debug][protectiondomain            ] class loader: a 'jdk/internal/loader/ClassLoaders$AppClassLoader'{0x00000000ee70de08} protection domain: a 'java/security/ProtectionDomain'{0x00000000ef103908} loading: 'com/sun/jna/Native'
[3.689s][debug][protectiondomain            ] granted
[3.689s][trace][protectiondomain            ] pd set count = #1
[3.689s][debug][class,resolve               ] com.sun.jna.platform.win32.Shell32 com.sun.jna.Native Shell32.java:45
[3.689s][info ][stacktrace                  ] java.lang.NoSuchMethodError, 12
[3.689s][info ][exceptions                  ] Exception <a 'java/lang/NoSuchMethodError'{0x00000000ef00dd70}: com.sun.jna.Native.load(Ljava/lang/String;Ljava/lang/Class;Ljava/util/Map;)Lcom/sun/jna/Library;> (0x00000000ef00dd70) 
thrown [t:/workspace/open/src/hotspot/share/interpreter/linkResolver.cpp, line 741]
for thread 0x00000000031a5000

Probably the discord library I added also contains jna, see log from jvm:

[3.689s][info ][class,load                  ] com.sun.jna.Native source: file:/E:/DownlordClient%20RC/Downlord's%20FAF%20Client/lib/discord-rpc-1.6.2.jar

На самом деле повторы перезагружаются правильно, насколько я могу судить. Но несколько дней назад повторы по какой-то причине не сохраняются локально. Я пока не нашел для этого причины.

Можете ли вы проверить папку с повторами, чтобы увидеть, есть ли там ожидаемые повторы?

Виновник вроде бы здесь:

2020-04-06 00:12:37.642  WARN 1020 --- [      Thread-60] com.faforever.client.game.GameService    : Can't find 11415015 in gameInfoBean map
Exception in thread "Thread-60" java.lang.NullPointerException
    at com.faforever.client.replay.LocalReplayInfo.updateFromGameInfoBean(LocalReplayInfo.java:47)
    at com.faforever.client.replay.ReplayServerImpl.finishReplayInfo(ReplayServerImpl.java:176)
    at com.faforever.client.replay.ReplayServerImpl.recordAndRelay(ReplayServerImpl.java:169)
    at com.faforever.client.replay.ReplayServerImpl.lambda$start$2(ReplayServerImpl.java:99)
    at java.base/java.lang.Thread.run(Thread.java:834)

та же проблема, локальные повторы больше не сохраняются с 7/4/2020, в тот день было 2 обновления: патч 3712 и даунлорды 1.1.5

может ли быть связано исправление Safequit? https://github.com/FAForever/fa/pull/3032

заметил одну странность в game.log

info: Sending game result: 1 victory 10
  info: SSB >>> TRACE GameResults:
  info: Sending stats: {"stats":...
  info: Sending stats: {"stats":...
  info: Sending stats: {"stats":...
  info: Sending stats: {"stats":...
  info: syncing max ping markers: 0015
  info: SSB >>> TRACE Sync.FocusArmyChanged -1
  info: Block is too late !    <-- this seems wierd
  info: terminated
  debug: OpenMovie /movies/menu_background.sfd: 67083

Говоря об ошибке меню локальных повторов (а именно, что список не обновляется после завершения очередной игры), эта проблема для меня сохранялась с самого начала использования клиента downlords faf, что произошло более полугода назад. Так что для меня это не новая ошибка. Я сообщил об этом сейчас, потому что раньше не знал, куда отправлять отчеты об ошибках.

Рассказывая об ошибке меню локальных повторов (а именно, что список не обновляется после завершения очередной игры) — эта проблема для меня сохранялась с самого начала

Это была другая проблема. Начиная с версии 1.1.3, клиент мгновенно перезагружает повторы (работает также при добавлении / удалении файлов в каталог).
Текущая проблема — это совершенно другая проблема, и некоторые (большинство) повторов на самом деле не сохраняются локально.

Мы ничего не меняли на сервере воспроизведения (локальном), я почти уверен, что это проблема с игровым патчем

У меня тоже есть эта проблема, и это немного расстраивает, когда я хочу пересмотреть игру, в которой я только что был, чтобы извлечь из нее уроки, и мне нужно подождать более 1 часа, чтобы онлайн-повтор стал доступен (показывает 0 байтов как размер).

Если это имеет какое-либо отношение к изменению SafeQuit , то это произойдет только для игр, в которых вы выходите раньше, используя кнопку «Exit to FAF» в меню. Это должно быть довольно легко проверить.

кажется, что phyton-клиент отлично сохраняет локальные повторы

Если это имеет какое-либо отношение к изменению SafeQuit , то это произойдет только для игр, в которых вы выходите раньше, используя кнопку «Exit to FAF» в меню.

Разве это не обработчик кнопки «Выход» на экране результатов, вызывающий SafeQuit ?
https://github.com/FAForever/fa/blob/720a72f5eca5330ba497320a618a57c7b981cda2/lua/ui/dialogs/score.lua#L467

Я также попытался провести небольшое тестирование:

2020-04-16

GAME 1: quit without ACU being dead -> replay is saved locally
GAME 2: quit using button "Score" after game was completed, ESC at score screen -> replay is NOT saved locally
GAME 3: quit without ACU being dead -> replay is saved locally
GAME 4: quit using button "Score" after game was completed, button "Exit" on score screen -> replay is NOT saved locally
GAME 5: quit without ACU being dead -> replay is saved locally
GAME 6: quit using button "Score" after game was won, but not ended (survival with Sandbox), button "Exit" on score screen -> replay is saved locally

2020-04-17

GAME 1: quit 1v1 ladder using button "Score" after game was completed, ESC at score screen -> replay is NOT saved locally
GAME 2: not sure; probably quit using button "Score" after dying -> replay is saved locally
GAME 3: quit using button "Score" after game was completed, ESC at score screen -> replay is NOT saved locally
GAME 4: quit using button "Score" after game was completed, ESC at score screen -> replay is NOT saved locally
GAME 5: quit 1v1 ladder game using button "Score" after game was completed, ESC at score screen -> replay is NOT saved locally
GAME 6: quit 1v1 skirmish game without ACU being dead -> replay is saved locally
GAME 7: quit 1v1 skirmish game without ACU being dead -> replay is saved locally
GAME 8: quit 1v1 ladder game without ACU being dead -> replay is saved locally

После еще более тщательного тестирования становится очевидным следующая картина:

  • Если игрок покидает запущенную игру, повтор сохраняется.
  • Если игрок покидает завершившуюся игру, повтор не сохраняется.

Кажется, определенно связано с https://github.com/FAForever/fa/pull/3032 , как предложил @EmielWitteman .

Я не думаю, что это проблема. Я запускал несколько игр на тестовом сервере, который все еще использует версию FA до того, как был развернут этот патч, и повтор все еще не сохранялся, когда я нормально закончил игру. Так что не похоже, что это имеет какое-то отношение к SafeQuit .

Для меня также не имеет смысла, чтобы это была проблема, исходя из проведенных вами тестов. Исправление SafeQuit предотвращает отправку результатов только при досрочном выходе из игры. Когда вы выходите после того, как игра завершилась должным образом, все результаты уже сообщены, поэтому изменение SafeQuit буквально ничего не делает.

Спасибо за внимание, @Askaholic.

Мои знания о частях LUA очень ограничены, но я подумал, что возможно, что изменение SafeQuit каким-то образом выявило ошибку в клиенте Java, потому что я не смог найти никаких недавних изменений в клиенте Java, которые могли бы повлиять на повторы.

Основная проблема, похоже, заключается в том, что предложил @Katharsas :

  1. Игра заканчивается, и на сервер отправляется GameResult
  2. Сервер информирует клиента о новом GameStatus ( CLOSED ). Затем клиент удаляет игру из uidToGameInfoBean .
  3. FA завершает работу, соединение от клиента к FA разрывается, что вызывает сохранение воспроизведения.
  4. При сохранении воспроизведения клиент пытается получить bean-компонент Game и не может этого сделать, что приводит к потере повторов.

Я не вижу причин, по которым bean-компонент Game нужно извлекать так поздно, и я попытаюсь изменить это соответствующим образом.

Ааа, я уверен, что это из-за этой смены сервера https://github.com/FAForever/server/pull/511.

Сервер начал считать, что игры закончились, как только сим закончился, другими словами, как только на экране появилось сообщение «игра окончена». Так что, возможно, когда GameState изменяется на CLOSED до завершения exe, это мешает сохранению воспроизведения.

Это объясняет, почему воспроизведение сохраняется, когда вы выходите из игры раньше, а не когда вы зависаете на экране счета.

Была ли эта страница полезной?

0 / 5 — 0 рейтинги

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Pick a username
Email Address
Password

By clicking “Sign up for GitHub”, you agree to our terms of service and
privacy statement. We’ll occasionally send you account related emails.

Already on GitHub?
Sign in
to your account

Every time I launch Downlords FAF client It crashes right after the login screen with this output.

https://pastebin.com/tXSSGPhk

Here is the error log mentioned.

https://pastebin.com/Bv8xcxYz

I tried the suggestion on Arch AUR by adding

-Djdk.gtk.version=2

to

/usr/share/java/downlords-faf-client/downlords-faf-client.vmoptions

But that didn’t do the trick either.

Any ideas or suggestions?

Arch Linux x86_64

5.8.13-arch1-1

AMD Ryzen 7 1800X (16) @ 3.600GHz

AMD ATI Radeon RX Vega 64

5417MiB / 15934MiB

Describe the bug

Running the faf-client script throws java.lang.ClassNotFoundException

To Reproduce

Adapted from the video tutorial from tatsu:

  • Download faf_unix_2022_11_0.tar.gz from github and unpack.
  • Copy the Supreme Commander run file into the directory and make it executable.
  • Execute INSTALL4J_JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/ ./faf-client

Log or error message

This is the error I get:

Error: Could not find or load main class install4j.com.faforever.client.Main
Caused by: java.lang.ClassNotFoundException: install4j.com.faforever.client.Main

Expected behavior

The FAF client should start.

OS

lsb_release -a:

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.5 LTS
Release:        20.04
Codename:       focal

java --version:

openjdk 17.0.5 2022-10-18
OpenJDK Runtime Environment (build 17.0.5+8-Ubuntu-2ubuntu120.04)
OpenJDK 64-Bit Server VM (build 17.0.5+8-Ubuntu-2ubuntu120.04, mixed mode, sharing)

ls -la /usr/bin/java:

lrwxrwxrwx 1 root root 22 Nov 14  2019 /usr/bin/java -> /etc/alternatives/java

ls -la /etc/alternatives/java

lrwxrwxrwx 1 root root 43 Jan  2  2022 /etc/alternatives/java -> /usr/lib/jvm/java-17-openjdk-amd64/bin/java

ls -la ~/opt/faf:

drwxrwxr-x 4 frank frank  4096 Nov 26 12:25 .
drwxrwxr-x 4 frank frank  4096 Nov 26 12:24 ..
-rwxr-xr-x 1 frank frank 12865 Nov 24 15:03 faf-client
-rw-r--r-- 1 frank frank   372 Nov 24 15:03 faf-client.vmoptions
drwxrwxr-x 2 frank frank 12288 Nov 24 15:03 lib
drwxrwxr-x 2 frank frank  4096 Nov 24 15:03 natives
-rwxrwxr-x 1 frank frank  1631 Nov 26 12:17 run
-rw-r--r-- 1 frank frank     4 Nov 24 15:03 steam_appid.txt

Thanks a lot!
Frank

Понравилась статья? Поделить с друзьями:
  • Factory game ошибка
  • Factorio ошибка нет пути
  • Factorio ошибка загрузки модов
  • Factorio ошибка opengl
  • Factorio код ошибки 520