Изправен съм пред този странен проблем.
Опитвам се да прочета файл, който се намира на друга машина като споделен ресурс:
\\remote-machine\dir\MyFileHere.txt
Когато стартирам самостоятелно приложение (16 редов java файл), всичко е наред. Но когато се опитам да прочета същия файл с помощта на същия клас и същия метод от сървърен "двигател" (това е приложен двигател, почти като Java EE сървър за приложения, където можете да стартирате java програми) "FileNotFoundException" се хвърля.
Мислех, че ще бъда някакъв вид разрешения, така че картографирам ресурса като устройство: K:\
Стартирайте повторно моя java файл, чете, добре.
Стартирайте повторно моя java файл вътре в "двигателя" -> FileNotFoundException.
Когато копирам файла в локалната машина ( C:\MyFileHere.txt ), не се хвърля изключение.
Въпрос
Какво може да причинява това FileNotFoundException?
Използвам Java 1.5
Доколкото знам, двигателят почти използва java прозрачно.
Някой сблъсквал ли се е с нещо подобно?
Допълнителен въпрос? Какъв би бил добър подход за заобиколно решение на това? Започвам да мисля за инсталация на tomcat, която да обслужва тези файлове и да ги чете през http, но мисля, че това е твърде много, затова SMB протоколът е за първо място, нали? И вероятно така или иначе няма да мога да отварям сокети.
Може ли мениджърът за сигурност да е причината (никога не съм го използвал преди, но знам, че съществува)
Няма ли вместо това да бъде хвърлено SecurityException, ако това е така?
Благодаря много.
РЕДАКТИРАНЕ
Решен. Благодаря ви, Стив У.
Оказва се, че този двигател се стартира с "LaunchAnywhere" от ZeroG. Така се създава .exe, който от своя страна ще стартира JVM с посоченото приложение.
Самото това приложение е Launcher. Когато стартира двигателя, по някакъв начин (не мога да разбера защо или как) потребителят, който притежава JVM процеса, е SYSTEM. КАКТО посочи Стив, този потребител няма достъп до МРЕЖА и следователно не може да чете от споделен ресурс или картографирано устройство.
Заобиколното решение (докато докладвам това на производителя) е да се създаде .cmd файл за ръчно стартиране на двигателя. Тъй като ще се стартира ръчно, потребителят има достъп до мрежата.
Използвах "Process Explorer" от SysInternals, за да знам точно командния ред, използван за стартиране на приложението на двигателя.
КАКВА БЪРКОТИЯ!
Благодаря на тези, които публикуваха отговори.