Jak wymusić otwieranie nieobsługiwanych plików

1

Oto prosty problem: nie mogę wybrać pliku tekstowego:

wprowadź opis zdjęcia tutaj

Celem jest dostarczenie aplikacji Java mojego banku pliku tekstowego, aby mógł coś z tym zrobić.

W swoim opisie wyraźnie mówią, że plik musi mieć format txt, ale to wszystko.

Już z nimi rozmawiałem, nie udało mi się rozwiązać problemu. Dlatego tu jestem.

Czy istnieje sposób, aby Finder wymusił akceptację dowolnego typu pliku?


Kilka dodatkowych szczegółów

Próbowałem tych wariantów rozszerzeń: txt text TXTnic nie działało.

W przypadku otwarcia okna dialogowego pliku otrzymuję to w konsoli systemowej:

fault   21:07:37.789598 +0100   java    Faild to get owner UUID for url: <private> error: Error Domain=NSCocoaErrorDomain Code=260 UserInfo={NSURL=<private>, NSFilePath=<private>, NSUnderlyingError=0x7fd5d4f2d530 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
fault   21:07:37.794009 +0100   java    Faild to get owner UUID for url: <private> error: Error Domain=NSCocoaErrorDomain Code=260 UserInfo={NSURL=<private>, NSFilePath=<private>, NSUnderlyingError=0x7fd5d4f2cc30 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
error   21:07:37.872025 +0100   java    Unable to load Info.plist exceptions (eGPUOverrides)
default 21:07:39.792043 +0100   kernel  AGC:: [java pid:18638] force EG up last PID 18638 WS-ready 1 switch-state 0 IG FBs 1 EG FBs 0:f power-state 0 3D busy HDA idle system-state 1 power-level 20:20 connect-change 0
default 21:07:39.792058 +0100   kernel  AGC:: [java pid:18638] force EG up last PID 18638 WS-ready 1 switch-state 0 IG FBs 1 EG FBs 0:f power-state 0 3D busy HDA idle system-state 1 power-level 20:20 connect-change 0

Oto, co pokazuje konsola Java podczas tego samego wydarzenia:

Java Web Start 11.191.2.12 x86_64
Using JRE version 1.8.0_191-b12 Java HotSpot(TM) 64-Bit Server VM
User home directory = /Users/Birowsky
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
m:   print memory usage
o:   trigger logging
p:   reload proxy configuration
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
0-5: set trace level to <n>
----------------------------------------------------
08:42:19 INFO: WRITE: com.teamdev.jxbrowser.chromium.internal.ipc.message.FocusMessage@2b023366, SocketInfo{channelId=0, browserId=0, channelType=Browser}
08:42:19 INFO: READ:  OnInvokeJSFunctionMessage{type=OnInvokeJSFunction, uid=28, name='CardReady', args='', returnValue='', errorMessage=''}, SocketInfo{channelId=0, browserId=0, channelType=Render}
CardReady() > checkServerCertificate(): true
Pozvana metoda run()
Number of readers: 1
Selected reader : 0
OS version: mac os x
Card is present!
Connection successful!
ATR: ok
Disconnection successful!
CardReady() > End: true
08:42:20 INFO: WRITE: OnInvokeJSFunctionMessage{type=OnInvokeJSFunction, uid=28, name='CardReady', args='', returnValue='b:1;', errorMessage=''}, SocketInfo{channelId=0, browserId=0, channelType=Render}
08:42:20 INFO: READ:  OnInvokeJSFunctionMessage{type=OnInvokeJSFunction, uid=29, name='ClientGetCertID', args='', returnValue='', errorMessage=''}, SocketInfo{channelId=0, browserId=0, channelType=Render}
ClientGetCertID() > checkServerCertificate(): true
08:42:20 INFO: WRITE: OnInvokeJSFunctionMessage{type=OnInvokeJSFunction, uid=29, name='ClientGetCertID', args='', returnValue='s:46;2051668607190566542320627606591412845831791822;', errorMessage=''}, SocketInfo{channelId=0, browserId=0, channelType=Render}
08:42:20 INFO: READ:  OnInvokeJSFunctionMessage{type=OnInvokeJSFunction, uid=30, name='openFiles', args='', returnValue='', errorMessage=''}, SocketInfo{channelId=0, browserId=0, channelType=Render}
openFiles() > checkServerCertificate(): true
08:42:20 INFO: WRITE: com.teamdev.jxbrowser.chromium.internal.ipc.message.UnfocusMessage@4d6101, SocketInfo{channelId=0, browserId=0, channelType=Browser}
----------------------------------------------------
>>>> Close "Open File" dialog <<<<
----------------------------------------------------
08:42:56 INFO: WRITE: OnInvokeJSFunctionMessage{type=OnInvokeJSFunction, uid=30, name='openFiles', args='', returnValue='o:undefined;', errorMessage=''}, SocketInfo{channelId=0, browserId=0, channelType=Render}
08:42:56 INFO: WRITE: com.teamdev.jxbrowser.chromium.internal.ipc.message.FocusMessage@49ffaaaa, SocketInfo{channelId=0, browserId=0, channelType=Browser}
08:42:58 INFO: WRITE: com.teamdev.jxbrowser.chromium.internal.ipc.message.UnfocusMessage@26a71c78, SocketInfo{channelId=0, browserId=0, channelType=Browser}

Oto jak wygląda moja konfiguracja Java .

Birowsky
źródło
jakie jest rozszerzenie nazwy pliku. Spróbuj otworzyć go za pomocą funkcji textEdit i sprawdź, czy działa.
jmh
@ jmh specyfikacja dostawcy stwierdza, że ​​plik musi mieć format txt. Więc utworzyłem pusty plik txt. Możesz to zobaczyć na zrzucie ekranu jako „test1.TXT”. Ten powyżej bez rozszerzenia, wciąż pusty plik tekstowy. Próbowałem też napisać „test1.txt” małymi literami, ale nadal nie miałem szczęścia.
Birowsky
Pytasz o Findera, ale nie chodzi o Findera, chodzi o standardowe otwarte okno dialogowe w konkretnej aplikacji.
JWWalker
@Birowsky Aby odpowiedzieć na twoje pytanie, jeśli aplikacja nie zapewnia maski, nic nie będzie szare. Ponieważ tak jest, oczywiście stosuje się jakiś filtr. Zobacz developer.apple.com/library/archive/documentation/…, aby uzyskać programowy opis tego, jak to się robi. Nie dlatego, że pomaga ci to zastąpić , ale opisuje, co się dzieje.
Marc Wilson
1
Firma może oznaczać .text zamiast .txt. To byłoby niegrzeczne z ich strony, ale możliwe. Niektóre pliki .rtf (tekst sformatowany) również otrzymują rozszerzenia .txt przez źle działające aplikacje. To może powodować problemy.
Wayfaring Stranger

Odpowiedzi:

1

Filtrowane według nazwy

Otwarte okno dialogowe Apple filtruje pliki tylko według nazwy i rozszerzenia. Jest bardzo mało prawdopodobne, że zawartość plików jest odczytywana i filtrowana, aby zdecydować, czy można je wybrać. Takie postępowanie stanowiłoby zarówno zagrożenie bezpieczeństwa, jak i koszmar wydajności.

Zakładając, że istnieje rozszerzenie pliku lub wzór, którego szuka otwarte okno dialogowe. Jako proces Java możliwe jest porównanie jest wielkość liter lub szukasz rozszerzeń typu okna zamiast UNIX .TXTvs .txtlub .textvs .txt.

Java Security

Alternatywnie możliwe jest , że ograniczenia bezpieczeństwa powstrzymują aplet Javy przed wybieraniem plików na komputerze.

Użyj /Applications/Utilities/Console.app, aby wyszukać komunikaty o błędach i ostrzeżenia zgłaszane przez dowolne javaprocesy. Jeśli obowiązują ograniczenia bezpieczeństwa, prawdopodobnie pojawi się komunikat w dzienniku.

Panel sterowania Java

Preferencje systemowe> Java> Java Control Panel

W Panelu sterowania Java na macOS znajduje się wiele zabezpieczeń i zaawansowanych ustawień, które mogą ograniczać działania procesu Java.

Sprawdź, czy masz zainstalowaną najnowszą wersję Java. Sprawdź także ustawienia zabezpieczeń. Zapewnić ostrzeżenia są wyświetlane Mixed code verificationi może włączyć Java consolesię Show console.

Panel sterowania Java - zaawansowane w systemie macOS

Zgłoś błąd

Jeśli to nie zadziała, zgłoś problem bankowi. Mogą wiedzieć o tym problemie i być w stanie dostarczyć rozwiązanie.

Graham Miln
źródło
Hej, dzięki za twój wysiłek! Filtrowane według nazwy: próbowałem wszystkich wariantów, nic nie działało. Java Security: oto, co złapałem w konsoli systemowej . Panel sterowania Java: Oto moja konfiguracja Java , oto co mam w konsoli Java . Daj mi znać, jeśli coś przyciągnie twoją uwagę.
Birowsky
Myślę, że przesadą jest stwierdzenie: „Jest mało prawdopodobne, aby zawartość plików była odczytywana i filtrowana, aby zdecydować, czy można je wybrać”. Dokumenty dotyczące metody delegowania Cocoa panel:shouldEnableURL:mówią, że powinna być szybka, ale nie dlatego, że nie może w ogóle patrzeć na zawartość pliku. Jednak bardziej prawdopodobne jest, że ta aplikacja Java ma po prostu błąd.
JWWalker
@Birowsky, czy możesz edytować swoje pytanie, aby dodać dodatkowe informacje. Ukryte w komentarzach niewiele osób zobaczy ten dodatkowy szczegół.
Graham Miln
@JWWalker Jestem przekonany, że wystąpił błąd. Miałem tylko nadzieję, że będzie jakaś funkcja, która pozwoli nam przesłonić filtr i wymusić wybór dowolnego pliku.
Birowsky
0

Aplikacja może szukać pliku z rozszerzeniem .txt. Na przykład; yourfilename.txt. TextEdit doda to rozszerzenie automatycznie do otwieranych plików tekstowych. Powinieneś spróbować otworzyć plik w TextEdit i sprawdzić, czy dodaje rozszerzenie. Jeśli otworzy plik, ale nie zapisze go .txtna końcu, zrób Zapisz jako i dodaj rozszerzenie ręcznie.

jmh
źródło
To powinno trochę oczyścić powietrze: właśnie wypróbowałem to samo na Windowsie, zadziałało. Okno dialogowe pliku pozwoliło mi wybrać DOWOLNY plik. Nie tylko txt. Chciałbym zwrócić uwagę, że w systemie Windows okno dialogowe było tym, które rysuje Java, a nie systemem.
Birowsky