小编Krz*_*Goj的帖子

Scala的隐藏功能

每个Scala开发人员都应该注意Scala的隐藏功能是什么?

请回答一个隐藏的功能.

scala hidden-features

149
推荐指数
24
解决办法
5万
查看次数

将32位库链接到64位程序

我有一个32位.so二进制文件库,我必须生成使用它的64位程序.有没有办法包装或转换它,所以它可以用于64位程序?

linux 64-bit 32-bit 32bit-64bit

18
推荐指数
2
解决办法
3万
查看次数

两个Eclispse项目 - >一个Eclipse插件

背景

我是Vrapper项目的开发人员.

Vrapper包含2个主要部分

  • Vim仿真库(vrapper.core)
  • Eclipse部分可以很好地利用它

我们希望vrapper.core是Eclipse不知道的,所以它可以在Eclipse之外重用.目前,我们可以"整理"各种Eclipse文本编辑器和我们用于单元测试的小型模拟文本编辑器.

vrapper.core实现了各种Vim命令,模式等.这些都与Platform进行通信 - 一个抽象出底层内容的接口(文本编辑器,剪贴板,设置系统等).

当为编辑器创建模式时,它会询问平台是否有额外的命令,这些命令适用于底层编辑器,当前编辑的文件类型等.

EclipsePlatform使用Eclipse扩展点机制提供这些命令.

那么,让我们考虑以下项目(还有更多):

  • vrapper.core - 与Vrapper无关的Eclipse代码
  • vrapper.eclipse - 依赖于vrapper.core的 Eclipse插件
  • surround.core - 与Eclipse无关的代码,模拟surround.vim(Vim插件)
  • surround.eclipse - vrapper.eclipse的 Eclipse片段, 它通过surround.core提供命令.

我们可以通过两种方式来处理这些问题:

一个插件来统治它们

从Eclipse的角度看它应该是这样的.有一个插件包含来自vrapper.eclipsevrapper.core的代码,以及一个包含来自surround.coresurround.eclipse的代码的片段.

很多插件

  • 有3个插件
    • 两个OSGified库vrapper.core,surround.core
    • vrapper.eclipse
  • 在这种情况下,surround.eclipse片段依赖于vrapper.core

问题

许多插件解决方案都有一些我不理解的延迟类加载的问题.这是因为当创建vrapper.core的模式实例时,他们需要创建来自surround.core的类(通过vrapper.eclipse - > surround.eclipse).

如果你从Eclipse运行东西并从运行配置中选择所有插件,这是有效的,但如果一个部署功能和插件并运行eclipse,则会抛出异常,因为找不到来自surround.core的类.这是环绕的精神.从依赖插件请求额外的命令创建隐式循环依赖.

我所说的隐式依赖是指在编译时没有核心类依赖于eclipse特定的类.

模式(如vim普通模式)是核心类.它们包含命令.有一些特定于Eclipse编辑器的命令(比如运行这个特定于JDT的重构).这些命令实现了核心接口,但它们的代码(显然)存在于特定于eclipse的项目中.创建模式时,它会向底层平台询问一些额外命令 - 这些额外命令是在eclipse插件中实现的.这是当eclipse中的延迟类加载使得一切都在运行时爆炸 - …

eclipse eclipse-plugin eclipse-pdt eclipse-rcp

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