2010-12-16 2 views
2

Какие параметры необходимо добавить в сборку maven или в среду выполнения java для доступа к внутренним классам sun.security? Java-код от Akamai в наборе OSGI нуждается в доступе к внутренним классам sun.security. Консоль Apache Felix дает ошибки для OSGI пачки:Как получить доступ к внутреннему классу sun.security из пакета 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 
... 

Я смотрел на this article about using internal sun classes, но это относится только к 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> 
    ... 
+0

Спасибо за редактирование, я все еще рыл вокруг проблемы, когда я разместил вопрос. – 2011-01-25 15:13:22

ответ

1

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

+1

В коде Akamai используются некоторые старые библиотеки, которые называют внутреннее солнце. * Classes. Я уже потратил некоторое время и узнал о различиях JRE в трудном ключе (MacOS X vs Linux). – 2010-12-16 15:23:36

+0

Я собираюсь удалить код нарушения из пакета OSGI и поместить его в автономный сервис, пока я не смогу избавиться от него. – 2010-12-16 16:03:14

21

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

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

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

Смежные вопросы