小编Boo*_*mah的帖子

如何从osgi中的字节反序列化对象

在我的osgi应用程序中,我有三个包travel.api,table.apiutils.travel.api取决于table.api哪个取决于utils.注意,travel.api不直接依赖utils.我使用aQute Bnd来生成清单,我相信它工作正常.清单如下所示.

有一个叫做类PageData的字段TableData,它有一个类型的字段,而这个字段又有一个类型的字段TestObject.PageData坐落于travel.api,TableData位于table.api以及TestObject位于utils.加载包时,这一切都正常.当我收到表示PageData对象的字节数组时,问题出现了.我必须在travel.api捆绑中反序列化它.这应该不是问题,因为它是定义的地方.我使用org.jboss.netty.handler.codec.serialization.ObjectDecoderInputStream并从travel.apibundle中传入类加载器.抛出以下异常,但基本上它说:

Caused by: java.lang.ClassNotFoundException: com.openaf.utils.TestObject not 
    found by travel.api [9].
Run Code Online (Sandbox Code Playgroud)

现在,这是有道理的,因为如果你看Import-Packagetravel.api,你会看到com.openaf.utils(其中TestObject位于)未列出.如果我添加此包,则正确反序列化.但是,这似乎不是一个好的通用解决方案,因为我必须遍历每个PageData使用的字段并确保它们都在此模块中导入,并递归地在这些字段包含的每个字段等.

我在这里做错了吗?

使用OSGi时反对对象反序列化的最佳方法是什么?

如果我正确地做了并且我必须指定所有"深度"导入,有没有办法让Bnd进行"深度"生成?

任何帮助将不胜感激!

我正在使用felix v4作为我的osgi库.

Manifest-Version: 1
Bnd-LastModified: 1355404320862
Bundle-ManifestVersion: 2
Bundle-Name: travel.api
Bundle-SymbolicName: …
Run Code Online (Sandbox Code Playgroud)

java osgi apache-felix bnd

9
推荐指数
1
解决办法
2198
查看次数

如何为整个JavaFX应用程序动态添加和删除css?

我正在使用JDK8 build 87并希望动态添加和删除css stylesheets它们,以便我的整个JavaFX应用程序可以使用它们.

目前我正在styleSheet使用此命令设置默认值:

Application.setUserAgentStylesheet(Application.STYLESHEET_MODENA);
Run Code Online (Sandbox Code Playgroud)

然后,当我想添加一个额外的CSS样式表时,我这样做:

com.sun.javafx.css.StyleManager.getInstance.addUserAgentStylesheet(styleSheet);
Run Code Online (Sandbox Code Playgroud)

这有效,但我有两个问题.首先,它使用的是私有 API,其次,一旦完成它,似乎没有办法删除它(我正在使用,OSGI因此模块来去经常).

有人谈到2012年初公众搬家StyleManager,但我不确定是否发生过任何事情. API

有没有人知道要添加的公共方法,styleSheets以便它们适用于整个JavaFX应用程序?如何删除它们?

(我没有权限创建新的javafx-8标记)

java javafx-2 javafx-8

8
推荐指数
1
解决办法
2576
查看次数

找到导出包的OSGI包?

如何找到导出包的包?

我使用的是felix,我有一个像"com.test"这样的字符串,我怎么知道哪个包出口那个包?

我不想使用PackageAdmin,因为它已被弃用,我真的不想为每个bundle获取Export-Package标头并解析它.

有任何想法吗?

osgi apache-felix

7
推荐指数
2
解决办法
5634
查看次数

为什么"Option"上的"contains"方法使用带有下限而不是"Any"类型的第二种类型?

我正在查看Scala中的Option类,并且遇到了contains方法:

final def contains[A1 >: A](elem: A1): Boolean
Run Code Online (Sandbox Code Playgroud)

选项是协变的,所以我理解它不能只使用A作为elem的类型.但是,鉴于A1类型从未使用过,为什么方法不能这样:

final def contains(elem: Any): Boolean
Run Code Online (Sandbox Code Playgroud)

这只是一种风格还是我错过了一些重要的东西?

scala

7
推荐指数
1
解决办法
143
查看次数

标签组件消耗鼠标所以标签不会改变

我有一个问题,当我向用作选项卡的组件添加鼠标侦听器时,我无法切换选项卡。

这说明了问题:

import javax.swing.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

public class JTabBug {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                JTabbedPane jTabbedPane = new JTabbedPane();
                jTabbedPane.addTab("Red", new JLabel("Roses"));
                jTabbedPane.addTab("Blue", new JLabel("Skies"));
                jTabbedPane.addTab("Green", new JLabel("Grass"));

                for (int i = 0; i < jTabbedPane.getTabCount(); i++) {
                    JLabel tabComponent = new JLabel(jTabbedPane.getTitleAt(i));

                    tabComponent.addMouseMotionListener(new MouseMotionAdapter() {
                        @Override
                        public void mouseDragged(MouseEvent e) {
                            System.out.println("dragging");
                        }
                    });
                    jTabbedPane.setTabComponentAt(i, tabComponent);
                }

                JFrame jFrame = new JFrame("Testing");
                jFrame.add(jTabbedPane);
                jFrame.setSize(400, 500);
                jFrame.setVisible(true);
                jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); …
Run Code Online (Sandbox Code Playgroud)

java swing jtabbedpane

5
推荐指数
1
解决办法
1383
查看次数

使用Maven在IntelliJ IDEA中排除文件夹

我们正在使用Maven来管理我们的想法项目,但是在从想法项目中排除目录时遇到了问题。

使用想法,我将转到项目设置| 模块| 来源并选择我要排除的文件夹,然后单击“排除”按钮。从pom加载项目时,将自动排除目标。我也想排除日志文件夹。

在Maven中,我使用了一个想法Maven插件,它说我可以排除文件夹。我正在使用此代码,但它似乎不起作用:

<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-idea-plugin</artifactId>
            <version>2.3-atlassian-1</version>
            <configuration>
                <downloadSources>true</downloadSources>
                <downloadJavadocs>true</downloadJavadocs>
                <exclude>
                    ${project.basedir}/logs
                </exclude>
            </configuration>
        </plugin>
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的格式以及输入了完全限定的路径(作为测试),但是似乎没有什么东西可以从我的想法项目中排除logs目录。

任何人有任何想法如何使它工作?

谢谢,尼克。

maven-2 intellij-idea

4
推荐指数
1
解决办法
4887
查看次数