JVM Настройка с использованием JAVA_OPTIONS с пробелом? - PullRequest
5 голосов
/ 05 октября 2010

Хорошо, поэтому я добавляю аргумент к своим JAVA_OPTIONS, как описано здесь .Однако, это не работает из-за места.Вот строка, которую я использую в сценарии оболочки UNIX (как указано в документации):

JAVA_OPTIONS="-DFRAMEWORK_HOME=${app_home}/conf
          -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0
          \"-Dcom.sun.jndi.ldap.connect.pool.protocol=plain ssl\""

Но я получаю следующую ошибку:

Exception in thread "main" java.lang.NoClassDefFoundError: 
"-Dcom/sun/jndi/ldap/connect/pool/protocol=plain

Я могу легко сделатьэто если я делаю protocol = plain ИЛИ protocol = ssl, но мне действительно нужно, чтобы он был "plain ssl".

Может кто-нибудь помочь?

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Двойные кавычки, включающие параметры командной строки, где экранированные двойные кавычки окружают значение свойства, имеющее пробел, похоже, работает.

$ export JAVA_OPTIONS="-Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0 \
-Dcom.sun.jndi.ldap.connect.pool.protocol=\"plain ssl\""

$ cat P.java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;

public class P {
    public static void main(String[] args) {
        Enumeration<?> e = System.getProperties().propertyNames();
        List<String> list = new ArrayList<String>();
        while (e.hasMoreElements()) {
            list.add((String) e.nextElement());
        }
        Collections.sort(list);
        for (String key : list) {
            System.out.println(key + "=" + System.getProperty(key));
        }
    }
}

$ javac -d ~/classes P.java

$ java -classpath ~/classes $JAVA_OPTIONS P | grep com.sun.jndi.ldap.connect.pool.protocol
com.sun.jndi.ldap.connect.pool.protocol=plain ssl
0 голосов
/ 05 октября 2010

Прежде всего ..... Я вроде думаю, что тот, кто решил, что в опцию должен быть включен пробел, должен быть военнослужащим из полиции Java: -).

При этом ... как вы сказали, ваша проблема заключается в пространстве.Чтобы избавиться от этого, нужно заключить его в кавычки.Я не пробовал это, но вы можете попробовать изменить его на:

JAVA_OPTIONS='-DFRAMEWORK_HOME=${app_home}/conf 
      -Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0 
      -Dcom.sun.jndi.ldap.connect.pool.protocol=\"plain ssl\"'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...