Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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 Aspectj在编织外罐中的应用_Java_Aspectj - Fatal编程技术网

Java Aspectj在编织外罐中的应用

Java Aspectj在编织外罐中的应用,java,aspectj,Java,Aspectj,我有一个如下的java文件 package sample; public class Profile { public static String myName(String name) { myhobby("Football"); return name; } public static String myhobby(String hobby) { return hobby

我有一个如下的java文件

package sample;
    public class Profile

    {


    public static String myName(String name)
    {
        myhobby("Football");
        return name;
    }
        public static String myhobby(String hobby)
    {


        return hobby;
    }

    }
我构建了这个文件,并将jar文件添加到下面的代码中

导入示例.配置文件

  public class Hello

    {

        public static String sayHello(String name)
        {

            String enter=Test.myName("Ganguly");
            return name;
        }

        public static void main(String[] args)
        {
        String next =   sayHello("Company");

        }
    }
我写的方面如下

pointcut printMessage(String name) : call(public static String myhobby(..)) && args (name));
     before(String name) : printMessage(name) {
            System.out.println("value is: "+ name);

     }
但是当我运行程序时…它不会打印函数的参数值。。。 如果我错了,有人能纠正我吗。。。
提前感谢…

默认情况下,AspectJ IDE仅使用同一项目的方面编织当前项目,对于其他场景,我们需要项目的附加路径或方面路径


从第二个项目(您的测试项目)的属性对话框>“AspectJ Build”页面>InPath,将您的jar添加到列表中(jar同时自动添加到Java构建路径库)。

谢谢您…它工作了..很好..我还有一个疑问…关于AspectJ..我可以问您吗?谢谢您。。。我在eclipse中安装了aspectj插件,然后创建了一个新的aspectj项目,其中创建了一个java类和.aj文件。我通过在Aspectj构建和运行方式->Java应用程序的路径中导入jar来编译它。然后它编译并成功运行指定的通知。然后我将项目导出为一个jar。然后我创建了一个常规java项目,然后导入导出的jar,然后调用常规java项目中的一个函数(为其编写了通知)。但是当函数被调用时,通知永远不会运行。你能告诉我为什么…不导出为普通jar,我们应该尽量使用确切的选项,'运行方式>Java应用程序可以工作'可能来自AJDT插件启用JDT编织,似乎'导出方式'为我们提供了另一个选项'导出到jar并支持AspectJ',请尝试“Jar with AspectJ support”。是的…我将Jar导出为export->Jar with AspectJ support…但是建议不起作用说,你的项目A是普通项目A的类,B是AJ项目B,C是普通项目C的类,当C调用A时,它不起作用,如果C调用B(B调用A),那么它就起作用了,因为B在B编译过程中已经编织好了,但是C不是AspectJ项目,它不是编织的。如果我们希望在C直接调用A的过程中进行编织,那么项目C应该是AspectJ项目,A.jar被添加到项目C的“In Path”中,B.jar被添加到项目C的“ApsectJ Path”中,或者我们改为使用运行时编织而不是编译时编织。