标签: java-5

将应用程序从Java 1.6降级到Java 1.5

我有一个用Java编写的小应用程序,经过测试并在JRE_1.6上运行.现在我需要针对JRE_1.5运行它.我改变了我必须符合Java 1.5要求的源代码,并且项目编译得很好.

问题是它使用了许多预编译的库opencsv-2.3,这些库是用Java 1.6编译的,因此调用它们的任何类会产生一个java.lang.UnsupportedClassVersionError.
他们中的大多数是com.apachelibs + opencsv-2.3+org.jdom

如何确定哪些库确实需要替换?如何替换需要它的库?

UPD:我怎能取代部分实际上代表"有什么可以,如果没有旧的图书馆做什么?" 有没有办法降级已编译的库,或者我是否需要在1.5上找到类似的解决方案并重写代码?

java downgrade java-5 java-6

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

varargs和歧义的概念?

这是一个例子:

package com.demo;
public class PassArray {
    static void vaTest(int... v){
        System.out.println("no of args : "+v.length+"contents: ");
        for (int x:v){
            System.out.println(x+" ");
        }
    }
    static void vaTest(boolean... v){
        System.out.println("no of args : "+v.length+"contents: ");
        for (boolean x:v){
            System.out.println(x+" ");

        }
    }
    public static void main(String args[]){

        vaTest(1,2,3);
        vaTest(true,false,true);
        vaTest();//Error:Ambiguous!
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我:

我有一些问题

1.为什么会出现模棱两可的错误?

2.i有一个Varargs参数就好

int doIt(int a,int b,int c,int... vals)
Run Code Online (Sandbox Code Playgroud)

为什么必须最后声明varargs?

  1. 什么是varargs和歧义?

java compiler-errors ambiguity variadic-functions java-5

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

Java 5中Java 7 for HashMap的变化

我不是Java专家,只是体验Java 5和Java 7上以下程序输出的变化.任何人都知道Java 7中HashMap实现的变化是什么吗?

import java.util.HashMap;
import java.util.Map;

public class HashMapDemo {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<String, String>();
        map.put("1", "111");
        map.put("a", "aaa");
        map.put("A", "AAA");

        map.put("D", "DDD");
        map.put("d", "ddd");
        map.put("0", "000");

        map.put("B", "BBB");
        map.put("b", "bbb");
        map.put("2", "222");

        for(Map.Entry<String, String> entry : map.entrySet()){
            System.out.println(entry.getKey()+ "  "+entry.getValue());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Java 7上的输出

D  DDD
2  222
d  ddd
1  111
0  000
b  bbb
A  AAA
B  BBB
a  aaa
Run Code Online (Sandbox Code Playgroud)

Java 5上的输出

0  000
1  111 …
Run Code Online (Sandbox Code Playgroud)

java java-5 java-7

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

Java - 将带有注释的类传递给泛型方法

我正在使用JPA 2并具有以下方法:

private static void wipeTable(EntityManager em, Class<? extends Table> klass) {
    String tableName = klass.getAnnotation(Table.class).name();
    ...
}
Run Code Online (Sandbox Code Playgroud)

我认为Class<? extends Table>参数存在问题.我有一个像这样的实体类:

@Entity
@Table(name = "collections")
public class Collection extends MyOtherClass implements Serializable { ... }
Run Code Online (Sandbox Code Playgroud)

我可以做得Collection.class.getAnnotation(Table.class).name()很好,所以我希望能够Collection作为参数传递.只是调用wipeTable(em, Collection.class);有以下错误:

FetchData类型中的方法wipeTable(EntityManager,Class <?extends Table>)不适用于参数(EntityManager,Class <Collection>)

我试过让参数为be Class klass,没有泛型:

private static void wipeTable(EntityManager em, Class klass) {
    String tableName = ((Table)klass.getAnnotation(Table.class)).name();
Run Code Online (Sandbox Code Playgroud)

这导致我的IDE建议:

类是原始类型.应参数化对泛型类的引用

我正在使用Java 1.5.有没有办法说"给我一个Class注释类型的参数@Table"?

java generics annotations raw-types java-5

2
推荐指数
1
解决办法
6401
查看次数

如何解决生产系统上的内存不足错误

我们在 Windows 上使用 JBoss_4_0_4_GA 和 JDK 1.5.0(无更新)

JBoss 服务器在 Wrapper(版本 3.2.3) http://wrapper.tanukisoftware.org内运行。

由于 JVM 太旧了,我什至无法在 JVM 上使用 -XX:+HeapDumpOnOutOfMemoryError 选项。

我可以选择什么来找出问题?

与往常一样,内存不足异常发生在应用程序的不同部分。

我没有立即升级 JVM 的自由。

    The current VM settings
    Java Additional Parameters
    wrapper.java.additional.1=-Xms512m
    wrapper.java.additional.2=-Xmx1024m
    wrapper.java.additional.3=-Dsun.rmi.dgc.client.gcInterval=3600000
    wrapper.java.additional.4=-Dsun.rmi.dgc.server.gcInterval=3600000
    wrapper.java.additional.5=-Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser
    wrapper.java.additional.6=-Djava.endorsed.dirs=D:/jboss-4.0.4.GA/lib/endorsed
Run Code Online (Sandbox Code Playgroud)

异常的片段

信息| JVM 1 | 2012/05/31 11:25:03 | 11:25:03,502 错误 [SOAPFaultExceptionHelper] SOAP 请求异常信息 | JVM 1 | 2012/05/31 11:25:03 | java.rmi.RemoteException:java.lang.OutOfMemoryError:Java堆空间;嵌套异常是:INFO | JVM 1 | 2012/05/31 11:25:03 | java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:Java堆空间

信息| JVM 1 | 2012/05/31 11:25:03 | 引起原因:java.util.concurrent.ExecutionException:java.lang.OutOfMemoryError:Java堆空间INFO | JVM 1 | 2012/05/31 …

java jvm out-of-memory java-5 jboss-4.0.x

2
推荐指数
1
解决办法
6183
查看次数

为什么我们需要一个Java锁才能读取?

Wrt ReadWriteLock,为什么我在尝试阅读某些东西时需要锁?仅在我正在更改变量时才使用我的知识,而不是读它以避免并发线程试图更改该变量。那么为什么我们只需要一个锁就可以阅读呢?

locking java-5

2
推荐指数
1
解决办法
1147
查看次数

使用Java 6执行Java 5代码

有没有什么办法可以在JDK 6上运行用Java 5编译的类文件(即使用main作为入口点)?

java compilation java-5 java-6

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

Unix shell:将带有目录名的文件转换为':'分隔的classpath

我使用Java5,我不想在Classpath中指出每个.jar文件,所以我试着编写小的shell脚本:

find $LIB_DIR -name '*.jar' -print > /tmp/classpath
CP= 
cat /tmp/classpath | while read line
do 
CP=$CP:$line
done 
rm -f /tmp/classpath
Run Code Online (Sandbox Code Playgroud)

但这不起作用 - $ CP变量是空的.

因此,$ CP应该是单个字符串,其中包含由':'分隔的路径

有谁知道这里有什么问题,以及如何正确地将所有文件的行连接到一个字符串?

java unix shell java-5

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

Java5中的方法公司具有通用内部另一个通用

我在使用泛型定义Java5方法时遇到了一些问题.

我试验过我可以定义一个方法如下:

public <R extends Runnable & MyInterface, T> void submit(R runnable, T task);
Run Code Online (Sandbox Code Playgroud)

因此,submit只接受R实现接口Runnable和类的对象的实例MyInterface.现在,假设我想做以下事情:

public <C extends Callable & MyInterface, T> submit(C<T> callable);
Run Code Online (Sandbox Code Playgroud)

其中C是一个Callable也实现MyInterface并具有类型返回值的T.在这种情况下,IDE会在方法公司中报告错误:

required: class
found: type parameter C
where C,T are type-variables
Run Code Online (Sandbox Code Playgroud)

定义第二种submit方法的正确方法是什么?

PS:我不知道标题是否是最好的.一旦确定问题类型,请随时改进标题!

java generics methods java-5

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

为什么Java要求1.5版本需要向后兼容?

Java 1.5是与泛型一起发布的,他们希望它与早期版本向后兼容,因此Java禁止在创建原始实例时使用方法特定的泛型。

例如

class A<T> {
    <U> U myMethod(U u) {
        return u;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我做 ,

A a = new A();
Run Code Online (Sandbox Code Playgroud)

a.myMethod将要求我将Object作为输入传递,其返回类型为Object。显然,类类型参数'T'与myMethod()特定的泛型'U'不冲突。但是Java却以某种方式表示,为了处理向后兼容性,它们会删除原始实例使用的所有泛型。

别人多次问了上述问题,所有答案都只说了一次,因为与早期版本的向后兼容性Java不允许这样做。[点]。

但是,没有一个答案提供了一个实例,以防Java允许对原始实例使用方法特定的泛型,而在早期版本中可能会失败。

任何人都可以通过提供一个特定的实例(如果他们允许的话)在1.5之前的早期版本中出现问题的情况来提供帮助吗?

请不要提供其他与问题无关的,没有答案的stackoverflow问题。

java generics backwards-compatibility java1.4 java-5

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

混合Java 5.0和Java 6.0代码

我有一个在java 5.0下开发的模块

package mypack;

class MessageParser {
    public MessageParser(String s) {
    ......
    }
}
Run Code Online (Sandbox Code Playgroud)

我有另一个在java 6.0下开发的模块

import mypack;
......
String str = someString;
MessageParser parser = new MessageParser(str);
......
Run Code Online (Sandbox Code Playgroud)

但我收到错误"找不到符号构造函数MessageParser(java.lang.String)"

BTW:我使用的IDE是intellij的想法

谁能告诉我为什么以及如何让它发挥作用?

java version intellij-idea java-5 java-6

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

学习Java 5 Vs Java 7?

我正在计划学习Java,我有使用其他面向对象语言编程的经验,因此我熟悉OOP概念.目前我正在考虑两本书,以帮助我在Java开发中获得快速启动."首先进入Java第二版"或"Java All-in-One For Dummies第3版".

现在很多人都建议首先将Java作为两本书的优先考虑.然而,首先进入Java的是2005年发布的(除非他们是一个我不知道的更新版本)并且在Java 5中教授.Java All-in-One于去年8月发布并针对Java 7进行了更新.

现在我的问题是我倾向于首先使用Java(使用Java5),我是否会错过Java 6和7的重要方面?我是否能够熟练掌握Java开发人员?

java java-5 java-7

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

看似不一致的"通过价值"规则.选择int []只是语法糖来使数组对象看起来像C/C++数组吗?

我在网上读到的东西错误地说int []Java中的标准等数组作为副本传递,而不是传递对数组的引用,类似于基本的数字类型,当我以为我在修改副本时最终覆盖了数组.我是否可以将其作为一种设计选择,以便在大约90年代中期为Java目标受众提供更简单的东西?(使对象在语法上看起来与C数组相同,或者Java中的数组实际上不是"Object"类型?)

也就是说,他们为什么不这样做:

Array array = new Array(<size>);
Run Code Online (Sandbox Code Playgroud)

另外,为什么他们不让所有内容(文字除外)通过引用来确保一致性?(int然后将s作为引用传递给int,而不是作为其值int,因此修改一个变量,该变量是该方法中方法的参数将修改原始变量的值,等等)

链接到Java中的pass-by-reference和pass-by-value的讨论

java language-features java-5

-2
推荐指数
2
解决办法
442
查看次数