小编Sha*_*med的帖子

在JDK 8中消除PermGen

我已经安装了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)

忽视这个论点的原因是什么?

java jvm permgen java-8

220
推荐指数
6
解决办法
17万
查看次数

在java中获取环境变量值

已在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)

java windows permissions

31
推荐指数
1
解决办法
6万
查看次数

为什么JavaMail连接超时太长

在我的应用程序中,我连接到服务器以验证用户.这是代码:

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分钟之后

怎么了 ?我怎样才能减少时间?

java jakarta-mail connection-timeout

17
推荐指数
6
解决办法
4万
查看次数

如何为最终类创建动态代理?

简而言之: 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可以某种方式做到......

java proxy mocking powermock cglib

9
推荐指数
2
解决办法
5717
查看次数

如何获取运行Java VM的名称?

如何找到当前运行的java虚拟机名称?我想从java API中获取它.

谢谢

java jvm

6
推荐指数
3
解决办法
1万
查看次数

如何在C中连接字符串?

如何以这种方式连接字符串?

例如:

char *txt = "Hello";
txt=txt+"World!";
Run Code Online (Sandbox Code Playgroud)

我尝试过,但事实并非如此.

c string string-concatenation

0
推荐指数
1
解决办法
93
查看次数