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
-
Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, — этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.
Скрыть объявление
-
Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.
Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
- Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
- Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
- Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
- Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
С уважением, администрация форума Old-Games.RU
Скрыть объявление
- Статус темы:
-
Закрыта.
- Статус темы:
-
Закрыта.
-
На этом сайте используются файлы 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 :
- Игра заканчивается, и на сервер отправляется
GameResult
- Сервер информирует клиента о новом
GameStatus
(CLOSED
). Затем клиент удаляет игру изuidToGameInfoBean
. - FA завершает работу, соединение от клиента к FA разрывается, что вызывает сохранение воспроизведения.
- При сохранении воспроизведения клиент пытается получить 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