在针对目标平台开发RCP应用程序时,我(和其他人)经常遇到需要从Eclipse发布软件站点添加的依赖项.每当插件包含在我的IDE中,但不在我的目标平台中,并且我尝试从产品定义中运行应用程序时,我会看到一个警告屏幕,通知我这样的捆绑包无法解析.
"没问题,只需将包含插件的功能从Eclipse下载站点添加到目标平台,并将所需的插件添加到插件项目/功能项目中,无论如何......"
但是,AFAIK,没有简单的方法(例如,网站)来找出哪个功能包括哪个插件.例如,为了添加org.eclipse.ui.views.properties.tabbed
,我需要知道该插件包含在该Eclipse Platform SDK
功能中(以及其他).
到目前为止,我还没有找到一种简单的方法来找出哪个功能包含哪个插件.我通常开始使用Google搜索插件名称,并尝试在搜索结果中查找教程或类似内容,这可能会告诉我要包含哪些功能才能访问插件.当然,这可能是单调乏味的.
所以我的问题是:是否有更好的,甚至是官方的(或管理的)方式来快速简单地找到这些信息?
我试图在Mac OS X 10.6上正确渲染Devanagari连字(在Unicode字符串中).
字符串在a上绘制JComponent
并RenderingHints
用于抗锯齿.连字在Windows XP SP2和7以及Ubuntu中正确显示,但在Mac OS X中,连字被分解(或者更确切地说,没有正确合并),变音符被移离其位置等等(参见下面的截图,正确的渲染示例来自左侧的Win XP SP2(使用RenderingHints
Antialiasing键ON
),右侧的Mac OS X 10.6.7中的错误渲染示例(Antialising DEFAULT
= OFF
).
我已将字体设置如下,因此它应该在任何系统上使用默认字体:
new Font(null,Font.PLAIN,20);
Run Code Online (Sandbox Code Playgroud)
我相信所有这些可能与Macs上的默认字符编码是MacRoman(不是UTF-8子集)以及其他系统(如Windows)使用UTF-8子集(例如WinLatin-1)这一事实有关. )或cp1252等.
即使掌握了这些信息,我也不知道如何处理这个问题.因此,如果有人能指出我正确的方向,我将非常感激.
我已经尝试了很多东西:
TextAttribute
LIGATURES_ON
没有解决问题我非常感谢任何提示或其他开发人员的代码片段(最好是在Mac上开发的印地语背景).
我怎样才能让我的自定义KeyListener
听取ALT
(或者CTRL
说那个)+多个其他键的组合?
假设我希望应用程序执行11个不同的操作,具体取决于按下的键的组合.ALT + 0
- ALT + 9
显然不会造成任何问题,而对于ALT + 1 + 0
(或"ALT + 10",因为它可以在帮助文件或类似文件中描述),我无法在网络上(或在我脑海中)的任何地方找到一个好的解决方案.我不相信这种带定时器的解决方案是唯一可行的方法.
提前一百万感谢您的任何建议!
编辑:操作0-9 +操作10 = 11个操作.谢谢@ X-Zero.
我正在开发一个Eclipse RCP应用程序,并且已经付出了一些努力让log4j2在应用程序中运行.现在一切似乎工作正常,作为画龙点睛,我想让所有记录器异步.
我已经设法在类路径上获得LMAX Disruptor,并认为我已经解决了提供的问题sun.misc
.-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
在运行配置中设置VM参数,并正确设置log4j2.xml文件.我想.这就是问题所在.我希望能够以正确的方式验证我的应用程序以异步方式记录,因此我可以享受延迟方面的好处.
我怎么能 - 然后 - 在过程中利用LMAX Dirsuptor验证我的记录器是否异步工作?
我有一个Jenkins作业,它使用Maven(mvn clean install
)从github.com存储库的主分支构建,然后检查Java文件中的许可证头和缺少的NOTICE文件,并在必要时添加它们(mvn license:format notice:generate
).有时这会导致更改或添加文件,有时不会.
每当有已作出(由许可证插件)的任何改变我要推更改到GitHub库.
现在我无法弄清楚如何最好地实现这一目标.我在Maven许可插件之后添加了一个shell构建步骤,执行git命令:
git add . # Just in case any NOTICE files have been added
git commit -m "Added license headers"
Run Code Online (Sandbox Code Playgroud)
git add .
单独工作,即不会破坏构建,即使没有添加任何文件.但是,git commit
如果根本没有任何更改,请中断构建.
我不担心回到github,因为我相信Git Publisher的后期构建操作可以为我做这件事.有人可以指点我正确的git提交方向吗?
我已经设法让JUnit 4.12 + Hamcrest 1.3 + Mockito 2.8.47在Eclipse中工作,这样当我将它们作为依赖项添加时,我的测试就会运行.
(我这样做的方法是使用p2-maven-plugin将Maven Central中的以下工件捆绑到插件/功能中并通过P2提供它们:
junit 4.12
org.mockito.mockito-core 2.8.47
org.hamcrest.all 1.3.0
将插件作为依赖项添加到我的测试片段使得测试在Eclipse中运行.
但是,相同片段的Tycho构建将失败,并显示以下消息:
java.lang.LinkageError: loader constraint violation: loader (instance of org/eclipse/osgi/internal/loader/EquinoxClassLoader) previously initiated loading for a different type with name "org/hamcrest/Matcher"
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.defineClass(ModuleClassLoader.java:273)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.defineClass(ClasspathManager.java:632)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findClassImpl(ClasspathManager.java:586)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClassImpl(ClasspathManager.java:538)
at org.eclipse.osgi.internal.loader.classpath.ClasspathManager.findLocalClass(ClasspathManager.java:525)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.findLocalClass(ModuleClassLoader.java:325)
at org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:345)
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:423)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:372)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:364)
at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:12)
at org.junit.Assert.assertThat(Assert.java:956)
at org.junit.Assert.assertThat(Assert.java:923)
Run Code Online (Sandbox Code Playgroud)
所以似乎其他一些插件正在我的片段 …
这是一个"元问题",当我试图为我的另一个问题找到更好的规范时,我遇到了这个问题(在Mac OS X上的Java Swing JComponent中渲染Devanagari连字符(Unicode)).
到目前为止我还不太了解的是给定系统的哪个"组件"(想要更好的词)负责在Java中显示Unicode文本,更具体地说是连字.
据我了解,以下组件对流程有影响:
Charset
(默认情况下是Mac OS X 10.6上的MacRoman,Windows 7上的cp1252)."字体包含有关他们正在使用的编码的信息".
因此,如果一串Unicode字符无法正确显示(如我的另一个问题所示,sa),问题最可能出在哪里?即,什么"组件"(更好的词会是什么?)负责"绑定"结扎,它的组成?
非常感谢您提前,如果您需要更多信息,请告诉我.
有没有办法找到我设置为“假定不变”的文件?
我已经修改了几个文件并希望将其拉出,因此我将它们设置为“假定未更改”。现在,我已经完成并想提交,但是它们没有出现在Git Staging中窗口中。
我使用Eclipse 4.4.2。
我用Tycho构建了一个Eclipse RCP应用程序(Indigo).构建在Win 7,64位机器上运行.
父POM包括:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho-version}</version>
<configuration>
<resolver>p2</resolver>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>macosx</os>
<ws>cocoa</ws>
<arch>x86_64</arch>
</environment>
...
Run Code Online (Sandbox Code Playgroud)
产品配置如下所示(有一些遗漏和可读性的额外换行符):
<product name="My App" uid="myapp.product" id="myapp.core.product" application="myapp.core.application" version="0.1.4.qualifier" useFeatures="true" includeLaunchers="true">
<configIni use="default">
</configIni>
<launcherArgs>
<programArgs>-data @noDefault</programArgs>
<vmArgsMac>-XstartOnFirstThread
-Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac>
</launcherArgs>
<launcher name="myapp_0_1_4">
<solaris/>
<win useIco="false">
<bmp/>
</win>
</launcher>
<vm>
<macos include="false">org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6</macos>
</vm>
<plugins>
<plugin id="com.ibm.icu"/>
<plugin id="myapp.core"/>
<plugin id="org.eclipse.core.runtime"/>
<plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/>
<plugin id="org.eclipse.equinox.app"/>
<plugin id="org.eclipse.equinox.common"/>
<plugin id="org.eclipse.osgi"/>
<plugin id="org.eclipse.swt"/>
<plugin id="org.eclipse.swt.win32.win32.x86_64" fragment="true"/>
<plugin id="org.eclipse.ui"/> …
Run Code Online (Sandbox Code Playgroud) 我相信这不可行,但我还是想问,以防万一我错了:
我曾经多次听说,每当你在一批中有一定数量的非常相似的代码行时,你应该总是循环遍历它们.
所以说我有类似以下的东西.
setPos1(getCard1());
setPos2(getCard2());
setPos3(getCard3());
setPos4(getCard4());
setPos5(getCard5());
setPos6(getCard6());
setPos7(getCard7());
setPos8(getCard8());
setPos9(getCard9());
setPos10(getCard10());
setPos11(getCard11());
setPos12(getCard12());
Run Code Online (Sandbox Code Playgroud)
没有办法减少代码行,例如,在下面,对吧?
for (i = 0; i < 12; i++) {
setPos + i(getCard + i)());
}
Run Code Online (Sandbox Code Playgroud)
我确信在某个地方之前会有人问这个问题,但Google和SO Search都没有提出否定证据.
感谢您快速确认!
java ×5
eclipse ×3
eclipse-rcp ×2
git ×2
macos ×2
rendering ×2
tycho ×2
unicode ×2
asynchronous ×1
bash ×1
build ×1
combinations ×1
egit ×1
hamcrest ×1
jenkins ×1
junit ×1
keyevent ×1
keylistener ×1
ligature ×1
log4j ×1
log4j2 ×1
logging ×1
loops ×1
mockito ×1
p2 ×1
plugins ×1
swing ×1
system ×1
update-site ×1