我已经安装了JDK 8并尝试运行Eclipse.我收到以下警告信息:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=512m;
support was removed in 8.0
Run Code Online (Sandbox Code Playgroud)
忽视这个论点的原因是什么?
已在Windows机器(Windows 7)中设置环境变量,并尝试从以下java代码获取变量的值.但是,它返回一个空值.
final String value = System.getenv("PE_CONF_PWD");
System.out.println(value);
//print null
Run Code Online (Sandbox Code Playgroud)
现在,如果我执行以下代码,它会抛出一个安全异常,这意味着用户没有变量.
SecurityManager m = new SecurityManager();
m.checkPropertyAccess("PE_CONF_PWD");
// java.security.AccessControlException: access denied ("java.util.PropertyPermission" "PE_CONF_PWD" "read")
Run Code Online (Sandbox Code Playgroud)
后来我在JRE安全策略文件中添加了权限并添加了以下条目,但仍返回null值.
permission java.lang.RuntimePermission "getenv.PE_CONF_PWD";
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我连接到服务器以验证用户.这是代码:
try {
Properties prop = new Properties();
prop.put("mail.smtp.starttls.enable","true");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.connectiontimeout", 1000);
Session session = Session.getInstance(prop, null);
Transport transport = session.getTransport("smtp");
transport.connect("mion.elka.pw.edu.pl", 587, registerLog, registerPass);
transport.close();
return true;
} catch (NoSuchProviderException ex) {
Logger.getLogger(RegisterController.class.getName()).log(Level.SEVERE, null, ex);
return false;
} catch(AuthenticationFailedException ex) {
Logger.getLogger(RegisterController.class.getName()).log(Level.SEVERE, null, ex);
return false;
} catch (MessagingException ex) {
Logger.getLogger(RegisterController.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
Run Code Online (Sandbox Code Playgroud)
我将连接超时设置为1000毫秒= 1秒,但它被忽略.当我调试并设置错误的用户名和密码时,我抓住了
javax.mail.MessagingException: java.net.SocketTimeoutException: Read timed out
Run Code Online (Sandbox Code Playgroud)
不是在1000毫秒之后,而是在5000*60毫秒= 5分钟之后
怎么了 ?我怎样才能减少时间?
简而言之: 1.我有一些最后的课,我想为它创建动态代理.我该怎么做?2.我可以将MethodHandle转换为Method吗?
详细信息 首先,是否存在将MethodHandle转换为Method的API?像java.lang.invoke.MethodHandles中的东西
public MethodHandle unreflect(Method m) throws IllegalAccessException;
Run Code Online (Sandbox Code Playgroud)
但相反的方式呢?
假设我想创建动态java.lang.reflect.Method.这是违法的
public final
class Method extends AccessibleObject implements GenericDeclaration,
Member ;
Run Code Online (Sandbox Code Playgroud)
所以,如果我想使用JDK动态代理,我必须使用一些接口(例如成员).虽然有2个主要的抽屉.一,方法如
public Class<?>[] getParameterTypes();
Run Code Online (Sandbox Code Playgroud)
等
public Class<?> getReturnType();
Run Code Online (Sandbox Code Playgroud)
不是任何界面的一部分,而它们被广泛使用.
第二个缺点是它无法提供直接替换.也就是说,我无法将我的动态代理传递给期望java.lang.reflect.Method的代码.
另一种方法是使用CGLIB或Javaassist.AFAIK,CGLIB无法代理最终班级,是吗?Javaassist可以代理最终类吗?如何从班级中"删除"最终标识符?AFAIL,Javvassist可以某种方式做到......
如何以这种方式连接字符串?
例如:
char *txt = "Hello";
txt=txt+"World!";
Run Code Online (Sandbox Code Playgroud)
我尝试过,但事实并非如此.