小编tkr*_*use的帖子

AspectJ:如何获得切入点来建议位于其他项目中的类

这应该很简单.

问题
如何在一个项目中获得切入点以建议另一个项目中的代码/类?


上下文
我正在使用两个项目在eclipse中工作.为了便于解释,让我们称之为一个科学项目和另一个数学项目,并说科学项目依赖于数学项目,我同时在两个项目中进行开发.数学项目是生产中的核心产品,如果我不修改代码,生活会更容易.

目前,我正在调试这两个项目之间的交互.为了帮助解决这个问题,我正在编写一个Aspect(在科学项目中)来记录关键信息,因为数学代码(和科学代码)会执行.


示例
我运行一个简单的示例方面:

package org.science.example;

public aspect ScientificLog {
    public pointcut testCut() : execution (public * *.*(..));
    before() : testCut() {
        //do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)


问题
问题是,无论我创建什么切入点,它只建议来自科学项目的代码.没有来自org.math.example横切的课程,全部!

我尝试添加的数学项目INPATH的的科学项目通过进入proect properties > AspectJ Build > Inpath并点击添加项目并选择数学项目.这没用,但似乎我需要按照这些方式做点什么.

在此先感谢您的任何建议...

-gMale


编辑1:
自写这篇文章以来,我注意到该项目出现以下错误:

Caused by: org.aspectj.weaver.BCException: Unable to continue, this version of AspectJ
supports classes built with weaver version 6.0 …

java eclipse aspectj pointcuts ajdt

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

为什么可以在gradle任务的名称中省略引号

我不明白为什么当我们声明它时,我们不需要为gradle任务的名称添加引号:

task hello (type : DefaultTask) {
}
Run Code Online (Sandbox Code Playgroud)

我试过一个时髦的项目,发现它是非法的,gradle是如何工作的.而且我不理解上面的表达式,为什么我们可以添加(type : DefaultTask),我们如何用groovy语法分析它?

groovy build-tools gradle

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

功能样式java.util.regex匹配/组提取

使用java.util.regex提取子字符串,我发现自己实现了相同的代码模式,以解决对的调用:

Pattern p = Pattern.compile(pattern); // can be static final
Matcher m = p.matcher(input);
if (m.find()) { // or m.matches()
    foo(m.group(x));
} else {
    ...
}
Run Code Online (Sandbox Code Playgroud)

是否有功能扩展或流行的库(番石榴/ apache通用),避免了不必要的,容易出错的局部变量,例如:

Pattern p = Pattern.compile(pattern); // can be static final
p.matchedGroup(input, x) // return Optional<String>
    .map(group -> foo(group))
    .orElse(...);
Run Code Online (Sandbox Code Playgroud)

以及一系列匹配结果,例如:

Pattern p = Pattern.compile(pattern);
p.findMatches(input)
    .map((MatchResult mr) -> {
        mr.groupsIfPresent(x).map(g -> foo(g)).orElse(...)
    })
    .findFirst();
Run Code Online (Sandbox Code Playgroud)

似乎Java8中唯一的功能性添加是,.splitAsStream()但是仅在尝试拆分匹配项时才有用。

java regex java-9

6
推荐指数
2
解决办法
128
查看次数

如何通过 Kotlin Gradle 和 -D 为我的测试提供系统属性

当我在 Gradle 中运行测试时,我想传递一些属性:

./gradlew test -DmyProperty=someValue
Run Code Online (Sandbox Code Playgroud)

所以在我的 Spock 测试中,我将用来检索值:

def value = System.getProperty("myProperty")
Run Code Online (Sandbox Code Playgroud)

我正在使用 kotlin gradle dsl。当我尝试使用本文档中的“tasks.test”时:https ://docs.gradle.org/current/userguide/java_testing.html#test_filtering

我的build.gradle.kts文件中无法识别“测试” 。

我假设我需要使用与下面帖子中的答案类似的东西,但尚不清楚在使用 gradle kotlin DSL 时应该如何完成。

如何通过 Gradle 和 -D 为我的测试提供系统属性

java gradle spock kotlin

6
推荐指数
2
解决办法
2671
查看次数

双重嵌套事务的回滚绕过保存点

这并不完全像标题所说的那样,但接近。考虑这些 Spring bean:

@Bean
class BeanA {

    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = EvilException.class)
    public void methodA() {
        /* ... some actions */
        if (condition) {
            throw new EvilException();
        }
    }
}

@Bean
class BeanB {
    @Autowired private BeanA beanA;
    final int MAX_TRIES = 3;

    @Transactional(propagation = Propagation.NESTED)
    public void methodB() {
        // prepare to call Bean A
        try {
            beanA.methodA();
            /* maybe do some more things */
        }
        catch (EvilException e) {
           /* recover from evil */
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

java spring jdbc spring-transactions

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

Gradle Kotlin DSL:子项目和插件的问题

摇篮6.1.1

我一直在尝试使用 Kotlin DSL 转换项目的 gradle 文件,但到目前为止失败了。我的所有项目都是用 Java 进行的多项目构建。我在这里遵循插件子项目示例

看起来像这样:

plugins {
    idea
    eclipse
}

subprojects {
    apply(plugin = "java")

    dependencies {
       implementation("com.google.guava:guava:28.1-jre")
       //...
    }
}
Run Code Online (Sandbox Code Playgroud)

java插件似乎在子项目中不被理解,并且所有“实现”行都得到了未解析的引用。

gradle gradle-kotlin-dsl

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

ffmpeg:幻灯片中图像的长宽比

我有一堆 PNG 图像文件。我正在尝试使用 ffmpeg 制作幻灯片。图片尺寸为3000*4000。这些图像的长宽比并不完全相同。

有些是这样的:

在此输入图像描述

有些是这样的:

在此输入图像描述

我使用了命令:

ffmpeg -loop 1 -framerate 1/10 -i img%3d.png -i audio.wav -vf scale=w=3840:h=-1 -vcodec libx264 -crf 14 -r 60 -pix_fmt yuv420p -shortest output.mp4
Run Code Online (Sandbox Code Playgroud)

它返回给我这个:

   ffmpeg version 3.3.2 Copyright (c) 2000-2017 the FFmpeg developers
  built with gcc 6.3.0 (Debian 6.3.0-18) 20170516
  configuration: --disable-decoder=amrnb --disable-decoder=libopenjpeg --disable-mips32r2 --disable-mips32r6 --disable-mips64r6 --disable-mipsdsp --disable-mipsdspr2 --disable-mipsfpu --disable-msa --disable-libopencv --disable-podpages --disable-stripping --enable-avfilter --enable-avresample --enable-gcrypt --enable-gnutls --enable-gpl --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libilbc --enable-libkvazaar --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb …
Run Code Online (Sandbox Code Playgroud)

linux ffmpeg aspect-ratio slideshow

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

Spring AOP中获取被拦截方法的Caller

有没有办法在Spring AOP中获取被拦截方法的调用者(MVC更具体)?我有两个方法说“callerM1()”和“callerM2()”,它们调用了一个被拦截的方法“method()”。然后我有一个这样的方面:

@Before("execution(* *.method(..)) && args(arg1)")
public Object doSomething(...){
    //find out which one and do something
} 
Run Code Online (Sandbox Code Playgroud)

如何仅使用 Spring AOP 功能来了解“callerM1()”或“callerM2()”中的哪一个调用了“method()”?在这里我也可以使用 around 建议,但我想这是一个不同的问题。我检查了各种可能性,包括 EnclosureStaticPart 和更改切入点定义但没有成功。

一个快速的解决方案是使用 StackTraceElement,但我认为这不是一个好的解决方案。

java aop aspectj

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

Eclipse CDT拼写检查XML(非C++)文件

在Eclipse Oxygen with CDT中我可以为大多数文件类型配置拼写检查

Preferences > General > Editors > Text Editors > Spelling
Run Code Online (Sandbox Code Playgroud)

但是对于显然在"结构化文本编辑器"中打开的XML文件,我找不到这样的选项.

这是隐藏在某个地方还是由一个好的插件覆盖?


更新

用户指南中提到的拼写检查为"结构化文本编辑器",但是,这并不符合实际的用户界面; 既不存在"窗口>首选项>拼写检查",也没有"编辑>拼写检查":

窗口>首选项>拼写检查 编辑>拼写检查

eclipse spell-checking eclipse-cdt

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

如何配置 WireMock 以使用 https(和随机端口)?

我尝试将wiremock设置为在随机端口上运行https:

@Rule
public WireMockRule wireMockServer = new WireMockRule(
    WireMockConfiguration.wireMockConfig().dynamicPort().dynamicHttpsPort()
);
Run Code Online (Sandbox Code Playgroud)

但是当我使用这个并打电话时,wireMockServer.httpsPort()我得到了异常:

java.lang.IllegalStateException: Not listening on HTTPS port. Either HTTPS is not enabled or the WireMock server is stopped.
    at com.google.common.base.Preconditions.checkState(Preconditions.java:150)
    at com.github.tomakehurst.wiremock.WireMockServer.httpsPort(WireMockServer.java:184)
Run Code Online (Sandbox Code Playgroud)

如何设置 WireMock 使用 https?

注意:我使用的是 2.14.0 版本

java junit wiremock

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