Назад | Перейти на главную страницу

Уважает ли java переменную env PATH при разрешении имени файла .jar?

Это то, что у меня есть PATH:

PATH=/opt/ClosureCompiler:/home/vmadmin/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Eсть compiler.jar в /opt/ClosureCompiler, но когда я звоню

java -jar compiler.jar

я получил

Unable to access jarfile compiler.jar

Хотя java -jar /opt/ClosureCompiler/compiler.jar работает нормально.

Итак, может ли Java следовать PATH для разрешения имен файлов? Если да - что я сделал не так?

Самый простой вариант - сделать банку разводной с помощью chmod +x compiler.jar. Затем вы можете запустить его со своего PATH следующим образом:

compiler.jar --help

Это еще несколько вариантов использования java команда для запуска файла.

Java использует CLASSPATH для поиска классов и других ресурсов. Путь к классам может содержать jar-файлы и каталоги. Java будет искать ресурсы в пути к классам. Определите переменную среды, содержащую пути, которые вы хотите найти. Разделитель путей: в Windows и: в большинстве других систем. Это будет работать для классов в командной строке, но не для jar-файлов. Если вы прочитаете manifest из compiler.jar вы можете написать короткое Compiler class, который вызывает основной класс. В качестве альтернативы просто вызовите основной класс напрямую, как указано в манифесте, вместо Compiler (как указано ниже).

Возможно, у вас уже есть путь к классам. Пытаться echo $CLASSPATH чтобы увидеть, так ли это. Пытаться

export CLASSPATH=$CLASSPATH:/opt/ClosureCompiler:/opt/ClosureCompiler/compiler.jar
java Compiler

или для закрытия (другие банки будут иметь другой основной класс).

export CLASSPATH=$CLASSPATH:/opt/ClosureCompiler/compiler.jar
java com.google.javascript.jscomp.CommandLineRunner

Вы должны определить свой CLASSPATH где вы добавили /opt/ClosureCompiler на твой путь. Тебе это не нужно /opt/ClosureCompiler на вашем пути.

Это образец файла Compiler.java.

import com.google.javascript.jscomp.CommandLineRunner;
public class Compiler {
    public static void main (String[] args) {
        CommandLineRunner.main( args );
    }
}

Его можно скомпилировать с помощью команды javac -cp compiler.jar Compiler.java.

В java исполняемый файл для поиска в списке каталогов файла .jar. Напишите сценарий оболочки, который выполняет java с полным путем к .jar.

#!/bin/bash
exec java -jar /opt/ClosureCompiler/compiler.jar