Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JCabi aspects@RetryOnFailure如何引发异常_Java_Aop_Jcabi - Fatal编程技术网

Java JCabi aspects@RetryOnFailure如何引发异常

Java JCabi aspects@RetryOnFailure如何引发异常,java,aop,jcabi,Java,Aop,Jcabi,我想通过使用JCabi手动调用方法重试。面向方面编程应该使这变得容易,但我无法理解 import com.jcabi.aspects.RetryOnFailure; public class Example { public int j; @RetryOnFailure(attempts = 4, delay = 100, verbose = true) public void retryFun() throws Exception { j+

我想通过使用JCabi手动调用方法重试。面向方面编程应该使这变得容易,但我无法理解

import com.jcabi.aspects.RetryOnFailure;

public class Example
{

    public int j;

    @RetryOnFailure(attempts = 4, delay = 100, verbose = true)
    public void retryFun() throws Exception
    {
        j++;
        if(j<3)
            throw new Exception();
        else
            return;
    }

    public static void main(String[] args) throws Exception
    {
        Example example = new Example();
        System.out.println(example.j);
        example.retryFun();
        System.out.println(example.j);
    }
}
发生异常时,该方法将重试两次,每次重试时间为10毫秒 尝试之间的延迟


很遗憾,我发现这些jcabi方面需要一个自定义pom.xml任务来编译项目中所需的方面


因此,在NetBeans中删除jcabi jar并编译上述代码是不够的。

事实上,仅仅使用jcabi注释是不够的。你应该“编织”你的源代码或二进制文件。我建议编织二进制文件,如下所述:。将此插件添加到您的
pom.xml
中,即可:

<plugin>
    <groupId>com.jcabi</groupId>
    <artifactId>jcabi-maven-plugin</artifactId>
    <version>0.8</version>
    <executions>
      <execution>
        <goals>
          <goal>ajc</goal>
        </goals>
      </execution>
    </executions>
</plugin>

com.jcabi
jcabi-maven插件
0.8
ajc

对于那些仍在寻找答案的人来说,耶戈尔的答案现在已经过时了。他发布的jcabi maven插件版本
0.8
不适合我

经过几个小时的挖掘,我发现其中规定我们应该使用截至2014年7月的最后一个版本
0.9.2


这就是为什么在运行mvn jcabi:ajc时,我从链接和编织中得到了错误的答案。

其他选择,您可以将这些配置添加到pom.xml中,以便在编译时编织

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>aspectj-maven-plugin</artifactId>
  <version>1.4</version>
  <configuration>
      <complianceLevel>1.6</complianceLevel>
      <encoding>${project.build.sourceEncoding}</encoding>
      <showWeaveInfo>true</showWeaveInfo>
      <source>1.7</source>
      <target>1.7</target>
      <verbose>true</verbose>
      <aspectLibraries>
          <aspectLibrary>
              <groupId>com.jcabi</groupId>
              <artifactId>jcabi-aspects</artifactId>
          </aspectLibrary>
      </aspectLibraries>
  </configuration>
  <executions>
      <execution>
          <id>weave-classes</id>
          <phase>process-classes</phase>
          <goals>
              <goal>compile</goal>
          </goals>
      </execution>
  </executions>
</plugin>

org.codehaus.mojo

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>aspectj-maven-plugin</artifactId>
  <version>1.4</version>
  <configuration>
      <complianceLevel>1.6</complianceLevel>
      <encoding>${project.build.sourceEncoding}</encoding>
      <showWeaveInfo>true</showWeaveInfo>
      <source>1.7</source>
      <target>1.7</target>
      <verbose>true</verbose>
      <aspectLibraries>
          <aspectLibrary>
              <groupId>com.jcabi</groupId>
              <artifactId>jcabi-aspects</artifactId>
          </aspectLibrary>
      </aspectLibraries>
  </configuration>
  <executions>
      <execution>
          <id>weave-classes</id>
          <phase>process-classes</phase>
          <goals>
              <goal>compile</goal>
          </goals>
      </execution>
  </executions>
</plugin>