Веб -запуск Java:<property …=""> игнорируется при использовании <extension>?

StackOverflow https://stackoverflow.com/questions/776667

  •  13-09-2019
  •  | 
  •  

Вопрос

У меня проблема с модернизацией приложения Java WebStart под Java 6 u 13 (последняя версия на данный момент)

Мы хотим использовать новый механизм для создания нескольких основных конфигурационных файлов, каждый со своей собственной конфигурацией, которые затем "включают" другой файл jnlp, который автоматически генерируется для обеспечения точности списка jar.После довольно продолжительных попыток я заставил это работать, за исключением того факта, что свойства, определенные в главном файле, недоступны программе при вызове Main.

Главный JNLP выглядит следующим образом (анонимизированный):

<jnlp>
  <information>
    <title>...</title>
    <vendor>...</vendor>
    <description>...</description>
    <description kind="short">...</description>
    <homepage href="http://....jnlp"/>
    <icon href="http://....gif"/>
    <!--          <offline-allowed/> -->
  </information>
  <security>
    <all-permissions/>
  </security>
  <resources>
    <j2se version="1.6+"/>
    <extension href="http://...extension.jnlp" />

    <property name="server.name" value="SERVER"/>
  </resources>
  <application-desc main-class="Main"/>
</jnlp>

и расширение.jnlp выглядит следующим образом:

<!-- Generated automatically.  Do not edit! -->
<jnlp>
  <information>
    <title>extension built 2009-04-22 12:39:58 CEST</title>
    <vendor>...</vendor>
  </information>
  <security><all-permissions/></security>
  <resources>
    <jar href="A.jar" />
    <jar href="B.jar" />
    <jar href="logback-classic-0.9.14.jar" />
    <jar href="logback-core-0.9.14.jar" />
    <jar href="slf4j-api-1.5.6.jar" />
  </resources>
  <component-desc />
</jnlp>

Я тоже пытался поместить свойство в расширение.jnlp.Не помогло.JVM используется повторно и не запускается повторно в соответствии с журналом в консоли плагина Java.

Есть какие-нибудь предложения?

Это было полезно?

Решение 2

В результате экспериментов я обнаружил, что свойства, определенные в файлах расширений, подчиняются гораздо более строгим правилам, чем те, что в основном файле jnlp, и те, которые не соответствуют правилам, автоматически отбрасываются.

Другие советы

Я боролся с той же самой проблемой.
Когда я переехал <property> элемент с расширением jnlp, то он доступен для приложения с использованием System.getProperty().

Но это не решение для меня, так как я хотел иметь расширение jnlp со всеми jar и и свойствами, определенными в mastet jnlp.

Похоже , что,

Для ненадежного приложения системные свойства, установленные в файле JNLP, будут установлены Java Web Start только в том случае, если они считаются безопасными.

Если кто-то хочет передать виртуальной машине собственные свойства, то их имена должны начинаться с javaws. или jnlp..Такие свойства считаются безопасными.В <property> элемент должен содержать value атрибут, например

<property name="jnlp.my.property" value="a value" />

Ссылки:

  1. http://docs.oracle.com/javase/6/docs/technotes/guides/javaws/developersguide/syntax.html#resources
  2. http://docs.oracle.com/javase/tutorial/deployment/doingMoreWithRIA/settingArgsProperties.html
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top