powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Java сбивается путь Relevant
13 сообщений из 13, страница 1 из 1
Java сбивается путь Relevant
    #40059267
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый..
Пишу интеграцию с государственным сервисом используя их либу.
Как только либа инициализируется я уже
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
Я уже не могу писать так
  FileInputStream readfile=new  FileInputStream(+"/template"+filename);
или
   protected JMenuItem jMenuItem6 = new JMenuItem("Экспорт",new ImageIcon("images/Export24.gif"));

Я должен делать так добавлять System.getProperty("user.dir")
  FileInputStream readfile=new  FileInputStream(System.getProperty("user.dir")+"/template"+filename);
protected JMenuItem jMenuItem6 = new JMenuItem("Экспорт",new ImageIcon( System.getProperty("user.dir")+"/images/Export24.gif"));


Код: html
1.
2.
3.
4.
И Это первый вынос мозга При правильном
 System.getProperty("user.dir") неверный относительный путь
Т.е мне не надо делать 
 System.setProperty("user.dir", System.getProperty("user.dir"))(Ну я делал не помогает)


Консультируюсь с ними что неудобно..говорят есть решение,- сделайте так
Код: java
1.
 SerLibraryUtils.SetCurrentDirectory(System.getProperty("user.dir"));



Мне уже интересно...декомпилирую этот класс
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class SerLibraryUtils
{
    public native boolean SetCurrentDirectory(final String p0);
    
    public native boolean SetUSBDevice(final int p0, final byte[] p1);
    
    static {
        try {
            EndUserResourceExtractor.LoadLibrary("LibaJavaUtils");//LibaJavaUtils.so
        }
        catch (Exception ex) {
    }
}



Код: html
1.
И это второй вынос мозга нативный вызов  нативной библиотеки меняет в java VM путь relevant


Кто-то встречался...как такое возможно?
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059313
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в java VM путь relevant
Что этот термин обозначает? Можно ссылку на доку?

Если либа меняется текущую директорию операционной системы, то непонятно, откуда возник вопрос и недоумение. Менять текущую директорию конечно плохо, но вполне вероятно, что были объективные причины (например legacy код который завязан на текущей директории).
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059314
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al

Код: java
1.
2.
3.
public class SerLibraryUtils
{
    public native boolean SetCurrentDirectory(final String p0);



Вроде бы даже название ф-ций подсказывает, что именно делается с помощью данной нативной либы )))

В общем, Ваше удивление лично мне не понятно.
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059319
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Ну путь Relevant ...я чуть опечатался ,-Конечно relative ... Это относительный путь
(В принципе могли догадаться)

Вроде бы даже название ф-ций подсказывает, что именно делается с помощью данной нативной либы )))

Да...Из названия то понятно...а вот реализация непонятна...неужели из нативной либы можно дернуть java VM в контексте смены каталога При том что
System.getProperty("user.dir")
Возвращает текущий каталог?
А в действительности он не текущий...Текущим является /tmp/LibaVersion
Если я создам файл new File("test")...Он окажется именно там.
Есть какая-то спецификация на это действие? в JNA JNI и т.д
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059325
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al,
Я вот тут сейчас писал ответ...и пришла мысль....наверное они просто в своей dll (so) на уровне API OS Меняют каталог процессу java
(И это объясняет ,что ява об этом ничего не знает ,возвращая верный user.dir...А операционка уже счиает по другому)
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059353
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al, ерунду какую-то пишете.

Ссылку на доку не нашел, придумывать не хочу
Если Вам интересно, то попытайтесь найти доку, что значит user.dir и чему он должен равняться и киньте ссылку на доку сюда.

Мне кажется, что если бы там был текущей директорий и его и назвали бы соответственно ))). Например по аналогии с ф-цией WinApi GetCurrentDirectory

автор relative ... Это относительный путь
(В принципе могли догадаться)

Ну относительный и относительный. При чем тут Java и JVM ?
Относительный путь в файловой системе считается от текущей директории операционной системы.

AFAIK

авторFileInputStream

На стек оверфлов пишут (ссылку на нормальную доку не нашел)
СтекОверфловAs stated in stackoverflow.com/a/840229/3159183, keep in mind that the -Duser.dir flag affects File objects (if they're not given a full path) but not FileOutPutStream objects.
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059354
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file#fully-qualified-vs-relative-paths

MSDNFully Qualified vs. Relative Paths

For Windows API functions that manipulate files, file names can often be relative to the current directory, while some APIs require a fully qualified path. A file name is relative to the current directory if it does not begin with one of the following:
.....


При чем тут Java VM, для меня загадка.
То, что в класс File добавили еще какой-то специфики поведения - то на совести Java архитекторов и помогающих им анал итиков

IMHO
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059358
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже на легкий documentation баг



JavaDoc класса FileInputStreampublic FileInputStream(String name)
throws FileNotFoundException
Creates a FileInputStream by opening a connection to an actual file, the file named by the path name name in the file system. A new FileDescriptor object is created to represent this file connection.
First, if there is a security manager, its checkRead method is called with the name argument as its argument.

If the named file does not exist, is a directory rather than a regular file, or for some other reason cannot be opened for reading then a FileNotFoundException is thrown.


the file named by the path name name in the file system

Вроде как вопросов не возникает. Имя файла в файловой системе. Если не абсолютное, то относительное ТЕКУЩЕЙ директории в ОПЕРАЦИОННОЙ системе. IMHO

JavaDoc класса FileA pathname, whether abstract or in string form, may be either absolute or relative. An absolute pathname is complete in that no other information is required in order to locate the file that it denotes. A relative pathname, in contrast, must be interpreted in terms of information taken from some other pathname. By default the classes in the java.io package always resolve relative pathnames against the current user directory. This directory is named by the system property user.dir, and is typically the directory in which the Java virtual machine was invoked.
....

By default the classes in the java.io package always resolve relative pathnames against the current user directory .

Тут моего знания английского не хватает, что бы корректно перевести и правильно of расставить )))

This directory is named by the system property user.dir, and is typically the directory in which the Java virtual machine was invoked

А тут мне кажется легкое лукавство. Т.к. подозреваю, что user.dir инициализируется текущей директорией на момент старта JVM . Подозреваю, но ссылку на доку пока не нашел. Ну и слова "is typically" в технической документации тоже выглядеть прелестно )))

IMHO
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059359
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да, что-то в Java хотели намудрить, но до конца не довели.

https://docs.oracle.com/javase/7/docs/api/java/nio/file/FileSystems.html#getDefault()

В общем, много знаний - много печали.
Никогда о user.dir не заморачивался и жил себе счастливо. Знаний, что в ОС есть текущая директория - мне вполне хватало )))
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059503
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,
Я помню еще в дельфях писал, и после того как соседние приложения меняли мой текущий каталог то забил вообще него опиратся. AFAIK
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059535
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А с какой ошибкой автор воюет? Чтоб менять user.dir есть команда ОС "cd" и ее вставляют в пусковой скрипт.
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059542
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А с какой ошибкой автор воюет? Чтоб менять user.dir есть команда ОС "cd" и ее вставляют в пусковой скрипт.

не воюю я с ошибкой...Хотел узнать как такого поведения JVM можно достигнуть..
Ну пока переписывался сам догадался...Написал
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1334935&msg=22303763
...
Рейтинг: 0 / 0
Java сбивается путь Relevant
    #40059550
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
irbis_al
mayton
А с какой ошибкой автор воюет? Чтоб менять user.dir есть команда ОС "cd" и ее вставляют в пусковой скрипт.

не воюю я с ошибкой...Хотел узнать как такого поведения JVM можно достигнуть..
Ну пока переписывался сам догадался...Написал
https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1334935&msg=22303763

В операционке путь задается на процесс. Другой процесс - может иметь другой $(pwd)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Java сбивается путь Relevant
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]