最近我在我的Web应用程序中遇到了这个错误:
java.lang.OutOfMemoryError:PermGen空间
这是在Tomcat 6和JDK 1.6上运行的典型Hibernate/JPA + IceFaces/JSF应用程序.显然,重新部署应用程序几次后就会发生这种情况.
导致它的原因以及可以采取哪些措施来避免它?我该如何解决这个问题?
是否可以从java.io.File?获取Path对象?
我知道你可以使用toFile()方法将路径转换为文件,但我找不到相反的转换.有没有办法在Java 6或更低版本中执行此操作?
我有一个Java中的Hashmap,如下所示:
private Map<String, Integer> team1 = new HashMap<String, Integer>();
Run Code Online (Sandbox Code Playgroud)
然后我这样填写:
team1.put("United", 5);
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得钥匙?像:team1.getKey()回归"联合国".
在我的机器我安装了两个版本的Java:(1.6和1.7手动我安装).我需要他们两个不同的项目.但Maven的,我需要1.7,现在我的Maven使用1.6 Java版本,我怎么能设置的Maven使用1.7?
为了准备Oracle认证助理Java SE 8程序员1考试,我在官方学习指南中看到了关于三元表达的以下段落:
三元表达式评估
从Java 7开始,将仅在运行时评估三元运算符的右侧表达式之一.以类似于短路运算符的方式,如果三元运算符中的两个右手表达式之一执行副作用,则可能不会在运行时应用它.让我们用以下例子来说明这个原则:[...]
它表示只评估两个表达式中的一个,演示如下:
int y = 1;
int z = 1;
int a = y < 10 ? y++ : z++;
Run Code Online (Sandbox Code Playgroud)
在这里,只有y增量,但z没有,正如您所期望的那样.
我绊倒的是段落的开头(标记为黄色),其中显示"从Java 7开始,......".我用Java 1.6测试了相同的代码,但是我找不到行为上的差异.我希望Java 1.6只根据段落中给出的信息来评估这两个表达式.有没有人知道他们想用"从Java 7开始......"这么说?
编辑:为了避免混淆:归结为这个问题,因为他们编写了"从Java 7开始",从Java 6切换到Java 7时,三元运算符有什么变化吗?
这是我的代码:
@Column(columnName="firstname")
private String firstName;
@Column(columnName="lastname")
private String lastName;
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
Run Code Online (Sandbox Code Playgroud)
是否可以在另一个类中读取我的注释@Column(columnName ="xyz123")的值?
我想获得一个目录中具有特定扩展名的文件列表.在API(Java 6)中,我看到了一个File.listFiles(FileFilter)可以执行此操作的方法.
由于我需要特定的扩展,我创建了一个FileNameExtensionFilter.但是当我使用listFiles它时出现编译错误.我认为,因为FileNameExtensionFilter implements FileFilter,我应该能够做到这一点.代码如下:
FileNameExtensionFilter filter = new FileNameExtensionFilter("text only","txt");
String dir = "/users/blah/dirname";
File f[] = (new File(dir)).listFiles(filter);
Run Code Online (Sandbox Code Playgroud)
最后一行显示编译错误:
类型File中的方法listFiles(FileNameFilter)不适用于FileNameExtensionFilter类型的参数
我试图使用listFiles(FileFilter),而不是listFiles(FileNameFilter).为什么编译器不能识别这个?
如果我编写自己的扩展过滤器扩展,这是有效的FileFilter.我宁愿使用而FileNameExtensionFilter不是写我自己的.我究竟做错了什么?
我是android世界的新角色,拥有.NET背景.我正在尝试安装Android Studio,但我在Android.com上与开发Android应用程序所需的JDK版本不匹配.
在SDK网页上,它指出需要JDK 6(在系统要求部分下).吉姆威尔逊也坚持他的Pluralsight课程(这是从去年五月开始的新课程),使用版本7和Android SDK将会产生很多麻烦,并且明确只使用JDK 6.
虽然在Android工作室页面(在安装步骤2下),他们解释了如何设置指示正确JDK位置的环境变量.在这里,他们使用JDK 7的路径
选择
Start menu > Computer > System Properties > Advanced System Properties.然后打开Advanced tab > Environment Variables并添加一个JAVA_HOME指向JDK文件夹的新系统变量C:\Program Files\Java\jdk1.7.0_21.
我很确定ADT和Eclipse软件包以及Android Studio软件包都使用相同的SDK,但现在我对我需要安装哪个JDK版本感到困惑.我唯一的目的是在迈出Android开发的第一步时尽可能避免出现问题.
免责声明:我对Pluralsight没有任何意义.我只是跟随课程的普通用户.
class Test {
public static void main(String...args) {
String s1 = "Good";
s1 = s1 + "morning";
System.out.println(s1.intern());
String s2 = "Goodmorning";
if (s1 == s2) {
System.out.println("both are equal");
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码在Java 6和Java 7中生成不同的输出.在Java 6中,s1==s2条件返回false并在Java 7中s1==s2返回true.为什么?
为什么这个程序在Java 6和Java 7中产生不同的输出?
在DirectoryWalker类中,我想知道File实例是否实际上是指向目录的符号链接(假设,walker在UNIX系统上行走).鉴于,我已经知道实例是一个目录,以下是确定符号链接的可靠条件吗?
File file;
// ...
if (file.getAbsolutePath().equals(file.getCanonicalPath())) {
// real directory ---> do normal stuff
}
else {
// possible symbolic link ---> do link stuff
}
Run Code Online (Sandbox Code Playgroud)