小编Jdv*_*Jdv的帖子

在 maven 测试运行中执行时,使用 Spring 注释进行测试会导致 ClosedByInterruptException

我有一个测试类,它看起来像这样:

@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)

java junit spring unit-testing maven

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

Eclipse RCP:以编程方式设置活动部分或选择非活动部分

在我的 Eclipse 插件中,我有以下工作流程:

  1. 获取Package Explorer中当前选定的项目
  2. 做一点事
  3. 获取Package Explorer中当前选中的项目(同1)
  4. 做一些不同的事情

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 不再是 的activePartselectionService因此selection为 null。

我的问题是:有什么方法可以获取ISelectionService非活动视图的特定视图吗?如果没有,有没有办法在执行步骤 3 之前以编程方式设置活动部分?

顺便说一句,这是一个 Eclipse 3.x 插件。

java eclipse eclipse-plugin eclipse-rcp

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

以编程方式触发Eclipse插件菜单项?

我有一个问题:我的Eclipse插件中有一个菜单项。它具有一个处理程序,该处理程序扩展AbstractHandler并覆盖execute()带有ExecutionEvent参数的参数。

现在,我要做的是在发生特定情况时触发此功能。有人可以告诉我该怎么做吗?

我想我必须以ExecutionEvent自己的方式创建一个?

java eclipse eclipse-plugin eclipse-rcp

2
推荐指数
1
解决办法
508
查看次数

Clojure:使用Lazy Sequence中的特定值提取地图

我有一个Clojure Lazy Sequence:

{
    {:keyOne 123, :keyTwo "TestVal"}
    {:keyOne 456, :keyTwo "Value2"}
    {:keyOne 789, :keyTwo "TestVal"}
}
Run Code Online (Sandbox Code Playgroud)

我想获得具有给定键的特定值的映射,例如,我想要所有具有值"TestVal"作为:keyTwo值的映射,因此我期望结果中的第一个和第三个元素.

我假设我应该能够解决这个问题filter,但我已经查看了我能找到的所有示例,他们从不使用这样的嵌套结构.

clojure lazy-sequences

2
推荐指数
1
解决办法
226
查看次数

在AtomicBoolean上同步?

在我正在开发的应用程序中,我发现了以下代码片段:

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并且不能期望它会阻塞对象。

我的问题是:重写此方法的正确方法是什么?我已经读过有关将锁对象与布尔属性一起使用的信息,但是为该锁引入两个新属性似乎有点笨拙。

编辑:正如下面的注释中所述:我认为目的是在两个synchronizedAtomicBoolean中不能更改,并且当一个线程位于其中一个synchronized块中时,不能再输入其他任何这样的块。

java multithreading synchronized atomicboolean java-8

2
推荐指数
1
解决办法
159
查看次数

从std :: string创建CString的C++失败

在我的基于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每次运行它的值都不同,但长度似乎是不变的.其他一些结果是042219B0042C4378.

我已经尝试了这个线程中讨论的每个变体,结果是一样的.我还试图将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,这也没有帮助.

c++ mfc c-strings stdstring visual-studio

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