Aspectj覆盖方法的参数

我正在开发一个方面来检查setter方法的参数并用空值覆盖空字符串。 到目前为止这是我的州: @Before(“execution(* de.foo.entity.*.set*(..)) && args(java.lang.String)”) public void check(final JoinPoint jp) { LOGGER.debug(jp.getSignature().toLongString()); Object[] args = jp.getArgs(); for (int i = 0; i < args.length; i++) { if (args[i] instanceof String && ((String) args[i]).isEmpty()) { args[i] = null; } } } 不幸的是,覆盖语句args[i] = null; 现在有效! 有谁知道我该怎么覆盖它? 干杯, 凯文

“热代码替换”无法正常工作 – Eclipse不会更改JBoss上的任何代码

我目前遇到的问题是“热代码替换”不适用于Eclipse Galileo和JBoss 4.2.3。 在其他应用程序中,我正在我的本地JBoss上运行爆炸的Java WAR。 构建它的项目由Maven管理。 我使用Maven目标战来构建项目:爆炸,然后我用ANT脚本将该目录复制到JBoss。 当我现在运行应用程序并在代码中的任何位置设置断点时,Eclipse在调试模式下正确地在该行停止。 但是当我对源文件进行更改并保存时,Eclipse不会将此更改应用于JBoss。 例如,当我在注释中创建一个正常的代码行时,调试器仍然会将此注释作为常规Java代码。 或者当我删除一行时,调试器似乎与文件不同步并开始踩过括号。 但我也没有得到任何“热代码替换错误”消息。 在我看来,Eclipse将更改应用于源文件,但不会将其应用于JBoss。 是否有任何必须打开的特殊首选项才能使热代码替换工作? 或者我是如何构建应用程序并将其部署到JBoss的?

是在Java中写入易失性的内存屏障

我最近在一次演讲中听到,写入volatile会触发线程写入的每个变量的内存屏障。 这是真的正确吗? 从JLS看来,似乎只有相关变量才会被刷新,而其他变量则不然。 有人知道什么是正确的吗? 能指出我在JLS的具体位置吗?

变量已经在方法lambda中定义

考虑以下几乎可编译的Java 8代码: public static void main(String[] args) { LinkedList users = null; users.add(new User(1, “User1”)); users.add(new User(2, “User2”)); users.add(new User(3, “User3”)); User user = users.stream().filter((user) -> user.getId() == 1).findAny().get(); } static class User { int id; String username; public User() { } public User(int id, String username) { this.id = id; this.username = username; } […]

使用Java修改文件的内容

我想用java程序删除一些文件内容,如下所示。 这是要在同一文件中替换的write方法,还是应该将其复制到另一个文件中。 但它删除了文件的所有内容。 class FileReplace { ArrayList lines = new ArrayList(); String line = null; public void doIt() { try { File f1 = new File(“d:/new folder/t1.htm”); FileReader fr = new FileReader(f1); BufferedReader br = new BufferedReader(fr); while (line = br.readLine() != null) { if (line.contains(“java”)) line = line.replace(“java”, ” “); lines.add(line); } FileWriter fw […]

在建立安全连接时,没有共同的密码套件

我正在尝试在两个Java项目之间建立安全连接,但我遇到了SSLHandshakeException(没有共同的密码套件)。 这是在两侧创建套接字的方法: 客户: private SSLSocket getSocketConnection() throws SSLConnectionException { try { /* Load properties */ String keystore = properties.getProperty(“controller.keystore”); String passphrase = properties.getProperty(“controller.passphrase”); String host = properties.getProperty(“controller.host”); int port = Integer.parseInt(properties .getProperty(“controller.port”)); /* Create keystore */ KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType()); keyStore.load(new FileInputStream(keystore), passphrase.toCharArray()); /* Get factory for the given keystore */ TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); […]

动态生成java源代码(不带xjc)

有没有人设法从没有XJC的JAXB模式文件生成Java代码? 有点相似 JavaCompiler javaCompiler = ToolProvider.getSystemJavaCompiler() 用于动态编译Java代码。 注意:在JDK 6上运行,意味着不推荐使用com.sun.*工具包(感谢Blaise Doughan的提示)

Java类中允许的最大代码行数?

.java文件包含多少行代码? 它取决于使用的JVM吗?

有什么方法可以“重启”JVM?

有没有办法重启JVM? 就像在实际上不退出,但关闭并重新加载所有类,并从顶部运行main?

为什么PhantomJSDriver不会使用我设置的function?

我正在为PhantomJsDriver设置一些function。 DesiredCapabilities caps = new DesiredCapabilities(); caps.setJavascriptEnabled(true); caps.setCapability(“cssSelectorsEnabled”, false); caps.setCapability(“applicationCacheEnabled”, true); caps.setCapability(“acceptSslCerts”,true); caps.setCapability(PhantomJSDriverService.PHANTOMJS_EXECUTABLE_PATH_PROPERTY,phantomJsPath); this.driver = new PhantomJSDriver(caps); 然后,我检查驱动程序使用的function: System.out.println(driver.getCapabilities()); 输出: Capabilities [{ platform=XP, acceptSslCerts=false, javascriptEnabled=true, browserName=phantomjs, rotatable=false, driverVersion=1.1.0, locationContextEnabled=false, version=1.9.7, cssSelectorsEnabled=true, databaseEnabled=false, handlesAlerts=false, browserConnectionEnabled=false, proxy={proxyType=direct}, nativeEvents=true, webStorageEnabled=false, driverName=ghostdriver, applicationCacheEnabled=false, takesScreenshot=true}] 表明: cssSelectorsEnabled=true, applicationCacheEnabled=false, acceptSslCerts=false 为什么驱动程序没有我设置的function运行?