Как получить доступ к внутреннему классу sun.security из пакета OSGI? - PullRequest
2 голосов
/ 16 декабря 2010

Какие опции мне нужно добавить в сборку maven или среду выполнения java для доступа к внутренним классам sun.security? В комплекте OSGI есть Java-код от Akamai, которому нужен доступ к внутренним классам sun.security. Консоль Apache Felix выдает ошибки для пакета OSGI:

sun.awt.image.codec -- Cannot be resolved
sun.io -- Cannot be resolved
sun.misc -- Cannot be resolved
sun.rmi.rmic -- Cannot be resolved
sun.security.action -- Cannot be resolved
sun.security.ec -- Cannot be resolved
sun.security.internal.interfaces -- Cannot be resolved
...

Я смотрел на эту статью об использовании внутренних классов солнца , но она относится только к javac. Мой Maven сборка начинается как:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd ">
  <modelVersion>4.0.0</modelVersion>
  <artifactId>cdncache</artifactId>
  <packaging>bundle</packaging>
  <name>NCDN Cache</name>
  <description>Classes and interfaces to expire resource from the Akamai CDN cache [build:${build.number}]\
</description>
  <version>1.0-${build.number}</version>
  <properties>
    <!-- Skip tests, so maven execution is faster. -->
    <maven.test.skip>true</maven.test.skip>
    <file.encoding>utf-8</file.encoding>
  </properties>
  <build>
    <plugins>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-bundle-plugin</artifactId>
    <version>2.0.1</version>
    <extensions>true</extensions>
    <configuration>
      <instructions>
        <Export-Package>
          com.nymag.akamai,
          com.akamai.*,
          ...
        </Export-Package>
        <Private-Package>
          org.apache.axis.*,
          ...
          sun.security,
          sun.security.ec,
        </Private-Package>
        <Bundle-Version>1.0</Bundle-Version>
        <Bundle-Activator>com.nymag.akamai.Activator</Bundle-Activator>
      </instructions>
    </configuration>
  </plugin>
  ...

Ответы [ 2 ]

23 голосов
/ 16 декабря 2010

Я согласен с stjohnroe в том, что использование классов, специфичных для ВМ, обычно плохо, но иногда это необходимо (например, поскольку вы в настоящее время находитесь в переходной фазе).Если вы хотите сделать это, вы можете добавить

org.osgi.framework.system.packages.extra=sun.your.package.of.choice

к свойствам платформы.Если вы используете стандартную программу запуска Felix, вы можете отредактировать conf/config.properties для этого.

1 голос
/ 16 декабря 2010

Все они не являются открытыми классами API и не могут использоваться во всех дистрибутивах jre.Я полагаю, что они все присутствуют в дистрибутивах Sun, но не в дистрибутивах IBM и т. Д. Попробуйте использовать дистрибутив Sun, но это похоже на случай использования недокументированных функций, большой нет, нет.

...