我有一个测试类,它看起来像这样:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = TestClass.TestConfig.class)
public class TestClass{
@Configuration
@EnableAspectJAutoProxy
@ComponentScan(basePackages = "package.with.dummy.provider.and.aspect", includeFilters = {
@Filter(Aspect.class), @Filter(Provider.class) })
public static class TestConfig {
@Bean
CustomApplicationListener listener() {
return new CustomApplicationListener ();
}
}
@Autowired
CustomApplicationListener listener;
@Test
public void testMethod() {
// Do something with the listener
}
}
Run Code Online (Sandbox Code Playgroud)
当我从 Eclipse 使用 JUnit 运行它时,它工作得很好。但是在我的 Maven 构建/测试周期中执行测试时,它失败并出现以下异常:
java.lang.IllegalStateException: Failed to load ApplicationContext
at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
[...]
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [Path\To\Aspect\DummyAspect.class]; nested exception is java.nio.channels.ClosedByInterruptException …Run Code Online (Sandbox Code Playgroud) 在我的 Eclipse 插件中,我有以下工作流程:
1(和3)是这样实现的:
ISelectionService selectionService = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getSelectionService();
ISelection selection = selectionService.getSelection();
[...]
Run Code Online (Sandbox Code Playgroud)
现在的问题是,在 1 之前,选择了 Package Explorer,因为这是触发工作流的唯一方法。但步骤 2 更改了活动部分,因为它刷新了 TreeView,使其成为活动部分。当我现在尝试运行 3(与 1 相同的方法)时,我遇到了一个问题:Package Explorer 不再是 的activePart,selectionService因此selection为 null。
我的问题是:有什么方法可以获取ISelectionService非活动视图的特定视图吗?如果没有,有没有办法在执行步骤 3 之前以编程方式设置活动部分?
顺便说一句,这是一个 Eclipse 3.x 插件。
我有一个问题:我的Eclipse插件中有一个菜单项。它具有一个处理程序,该处理程序扩展AbstractHandler并覆盖execute()带有ExecutionEvent参数的参数。
现在,我要做的是在发生特定情况时触发此功能。有人可以告诉我该怎么做吗?
我想我必须以ExecutionEvent自己的方式创建一个?
我有一个Clojure Lazy Sequence:
{
{:keyOne 123, :keyTwo "TestVal"}
{:keyOne 456, :keyTwo "Value2"}
{:keyOne 789, :keyTwo "TestVal"}
}
Run Code Online (Sandbox Code Playgroud)
我想获得具有给定键的特定值的映射,例如,我想要所有具有值"TestVal"作为:keyTwo值的映射,因此我期望结果中的第一个和第三个元素.
我假设我应该能够解决这个问题filter,但我已经查看了我能找到的所有示例,他们从不使用这样的嵌套结构.
在我正在开发的应用程序中,我发现了以下代码片段:
public class MyClass {
private AtomicBoolean atomicBoolean = new AtomicBoolean(false);
public void Execute() {
// Whole lot of business logic
// ....
synchronized (this.atomicBoolean) {
// Want to make sure that execution is stopped if Stop() was called
if (this.atomicBoolean.get()) {
throw new SpecificException("...");
}
// Some more business logic...
}
}
public void Stop() {
synchronized (this.atomicBoolean) {
this.atomicBoolean.set(true);
}
}
}
Run Code Online (Sandbox Code Playgroud)
根据FindBugs的说法,这是不正确的,因为我不能与AtomicBoolean一起使用,synchronized并且不能期望它会阻塞对象。
我的问题是:重写此方法的正确方法是什么?我已经读过有关将锁对象与布尔属性一起使用的信息,但是为该锁引入两个新属性似乎有点笨拙。
编辑:正如下面的注释中所述:我认为目的是在两个synchronized块AtomicBoolean中不能更改,并且当一个线程位于其中一个synchronized块中时,不能再输入其他任何这样的块。
在我的基于MFC的应用程序中,此代码:
std::string stdString("MappingName");
std::cout << "as String: " << stdString << std::endl;
CString cString(stdString.c_str());
std::cout << "as CString: " << cString << std::endl;
Run Code Online (Sandbox Code Playgroud)
生成此输出:
as String: MappingName
as CString: 01DEA060
Run Code Online (Sandbox Code Playgroud)
CString每次运行它的值都不同,但长度似乎是不变的.其他一些结果是042219B0和042C4378.
我已经尝试了这个线程中讨论的每个变体,结果是一样的.我还试图将Visual Studio项目中的字符集从使用Unicode字符集更改为使用多字节字符集,同样没有任何效果.
转换失败的原因是什么?
编辑:更多的测试表明,它的价值std::string似乎没有区别:
tmp as String: The quick brown fox jumps over the lazy dog
tmp as CString: 00EAAF88
Run Code Online (Sandbox Code Playgroud)
我还将字符集设置为Not Set,这也没有帮助.
java ×4
eclipse ×2
eclipse-rcp ×2
c++ ×1
c-strings ×1
clojure ×1
java-8 ×1
junit ×1
maven ×1
mfc ×1
spring ×1
stdstring ×1
synchronized ×1
unit-testing ×1