我想学习一些关于javaagents的东西,但研究并不容易.大多数结果指的是JADE.我知道java代理可能意味着两件事:
我在这里找到了类似的问题,但不幸的是它也提到了版本1.
将方面应用于我的maven项目时遇到问题.可能我错过了一些东西,所以我已经列出了一系列步骤.你能检查一下是否正确吗?
让我们说projectA是一个方面类和projectB类,应该由方面改变.
ProjectA用AspectJclass 创建maven项目Aspectj插件和依赖项ProjectA为依赖项projectB pom.xmlprojectB pom.xml插件<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
<configuration>
<source>${maven.compiler.source}</source>
<target>${maven.compiler.target}</target>
<aspectLibraries>
<aspectLibrary>
<groupId>ProjectA</groupId>
<artifactId>ProjectA</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
完成所有这些步骤之后我的问题是,在编译期间,我得到:
[WARNING] advice defined in AspectE has not been applied [Xlint:adviceDidNotMatch]
Run Code Online (Sandbox Code Playgroud)
然后当我运行我的程序时:
Exception in thread "FeatureExcutionThread" java.lang.NoClassDefFoundError: AspectE
Run Code Online (Sandbox Code Playgroud) 我有一个关于如何使用SocketAppender 的答案(我需要它来从分布式系统收集日志),但我是log4j的新手,我不知道如何使用该示例代码.
可能我应该有这样的log4j-server.properties:
log4j.appender.SERVER=org.apache.log4j.net.SocketAppender
log4j.appender.SA.Port=4712
log4j.appender.SA.RemoteHost=loghost
log4j.appender.SA.ReconnectionDelay=10000
Run Code Online (Sandbox Code Playgroud)
但我还是不知道如何启动服务器(如何使用这一行)
org.apache.log4j.net.SimpleSocketServer 4712 log4j-server.properties
什么是最重要的:哪里\我怎样才能看到我的日志?
在log4j.properties我可以设置PatternLayout例如("[%p] %c - %m - %d %n")
是否有任何符号(%something)以毫秒为单位返回当前时间?
我试过按照本教程,但我有导入问题.
我有:
The import com.sun.tools cannot be resolved
Run Code Online (Sandbox Code Playgroud)
排队
import com.sun.tools.attach.VirtualMachine;
Run Code Online (Sandbox Code Playgroud)
我试图在Sun/Oracle网站上查找一些信息,但我没有找到任何有用的信息.
我正在开发JDK 1.6.0_31.
我正在尝试将a转换cellTable为a datagrid,因为我想稍后添加一个搜索处理程序,因此我需要修复列标题.目前我扩展celltable/ datagridclass并将小部件放入a simplelayoutpanel并将其添加到我的tabpanel.
如果我使用celltable,一切正常,数据显示.如果我将类的类型更改为datagrid,则数据有时会显示(列名始终存在).添加到我使用的表setRowData或a dataProvider.如果我设置断点以延迟加载表内容,则表有时会包含数据.如果我稍后调用表的重绘方法,该表将显示正确的信息.但该表应自动加载内容.在我的项目的其他"位置",我也使用了数据网格并且它可以工作Dialogboxes.
我认为项目的绘制肯定存在错误,因为如果我调用.getRowCount表或弃用.getDisplayedItems,它会返回表中应该有正确数量的项目.此外,如果我向表中添加选择模型并选择项目,则该项目包含有效数据.
我不确定Socket Appender是如何工作的.我知道记录事件被发送到特定端口.然后我们可以在控制台上打印日志或将其放入文件中.
我的问题更多的是关于日志的发送方式.有没有例如一个队列?是同步还是异步?可以使用它减慢我的程序?
我在这里找到了一些信息,但对我来说并不清楚.
根据我的研究,我知道使用AspectJ有两种方法.首先是通过创建A.aj通过添加注释类和第二@Aspect在A.java.
我正在为第二类寻找一个好的教程,特别是关于像
@After("call(void fooMethod())")
@Around("call(void sendAndReceive())")
@Before("execution(String greeting(..)) && args(context)")
Run Code Online (Sandbox Code Playgroud)
但我不知道他们是怎么叫的.
你能推荐一些教程吗?
我知道在谈论流程时我们可以拥有"父母"和"孩子".但是有可能得到父母的Thread名字吗?
我做了我的研究,但我找到了仅针对.Net的答案
编辑:我尝试设置名称:
public class Main {
public static void main(String[] args) {
Thread r = new ThreadA();
r.start();
}
}
public class ThreadA extends Thread {
public void run() {
Thread.currentThread().setName("Thread A");
System.out.println("Here " + Thread.currentThread().getName());
Thread r = new ThreadB();
r.setName(Thread.currentThread().getName());
r.start();
}
}
public class ThreadB extends Thread {
public void run() {
Thread.currentThread().setName("Thread B");
System.out.println("Here " + Thread.currentThread().getName());
Thread r = new ThreadC();
r.setName(Thread.currentThread().getName());
r.start();
}
}
public class ThreadC extends Thread …Run Code Online (Sandbox Code Playgroud)