标签: java-6

使用 dom4j DOMDocument 来提供 validator.validate(DOMSource) 在 java 1.6 中失败(xsi:noNamespaceSchemaLocation 是不允许的),在 1.5 中有效

使用 dom4j DOMDocument 来提供 validator.validate(DOMSource) 在 java 1.6 中失败(xsi:noNamespaceSchemaLocation 不允许出现在根元素中),在 1.5 中有效

我发现以下问题非常棘手(好吧,这是轻描淡写) - 任何见解将不胜感激。目前似乎最好的主意是放弃 dom4j 以支持 XOM(http://stackoverflow.com/questions/831865/what-java-xml-library-do-you-recommend-to-replace-dom4j)。

我一直在验证从 dom4j 'new DOMDocument()' 创建的内存 XML - 但这不适用于 Java 6。

以下对 dom4j (1.6.1) DOMDocument 派生的 DOMSource 的 validate(source) 调用适用于 Java 1.5.x,但在 Java 1.6.x 中失败:

public void validate() throws Exception {
    SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    schemaFactory.setErrorHandler(null);
    Schema schemaXSD = schemaFactory.newSchema(new URL(getSchemaURLString()));
    Validator validator = schemaXSD.newValidator();
    DOMSource source = new DOMSource(getDocument());
    validator.validate(source);
}
Run Code Online (Sandbox Code Playgroud)

getSchemaURLString() 也用于在根节点添加 xsi:noNamespaceSchemaLocation 属性,即: xsi:noNamespaceSchemaLocation="http://localhost:8080/integration/xsd/fqlResponseSchema-2.0.xsd"

异常如下:

Exception:  org.xml.sax.SAXParseException: cvc-complex-type.3.2.2: Attribute 'xsi:noNamespaceSchemaLocation' …
Run Code Online (Sandbox Code Playgroud)

xsd dom4j saxparseexception java-6

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

为什么 com.sun.media.sound 包没有记录在 Java SE 6 apidoc 中?

我看到我的发行版中有com.sun.media.sound包含文件的包。但我在这里没有看到它的javadocs: http: //docs.oracle.com/javase/6/docs/api/rt.jarjdk1.6.0_25

这个包的作用是什么?它是什么的一部分?我可以通过 Google 找到一些 javadocs(例如这里http://www.docjar.com/docs/api/com/sun/media/sound/package-index.html),但是如何知道哪个对于 SE 是正确的6?为什么它没有记录在主 javadoc 中?

编辑

所以,我知道它们不是公共API,但是它们的用途是什么?为什么他们记录在 openjdk javadoc 中?他们在那里公开吗?

java media javadoc package java-6

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

在较小的应用程序中替代Spring

我喜欢工作与春天功能,例如@Component,@Autowired或者ApplicationContext甚至在更小的应用程序(如批量应用).

我已经读过Java EE 6现在是企业应用程序中Spring的可行替代方案.对于较小的那个也是如此吗?我上面提到的功能有哪些相应的替代方案?

java spring java-6

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

如何在mac OS X 10.8.2上切换Java 7和Java 6?

我正在使用Java SE 7为windows和mac编写简单的游戏,但我必须切换到java 6才能在我的计算机上运行Minecraft等游戏.在我更新到Mac OS X 10.8.2 Build 12C60之前,这曾经工作得很好.在此更新之前,我曾经能够打开java首选项并检查java 6或java 7.但是现在我似乎无法找到java首选项.

我正在运行mac OS X 10.8.2(最新版本)

谢谢.

java preferences java-6 java-7 osx-mountain-lion

5
推荐指数
0
解决办法
2426
查看次数

如何使用 OS X 2012-006 的 Java 恢复 OS X 中的 Java 首选项?

安装Java for OS X 2012-006更新后,用于配置小程序的 Java Preferences 应用程序以及对我来说更重要的是 Java Web Start 应用程序都消失了。关于此更新的技术说明说:

此更新还删除了 Java 首选项应用程序,不再需要配置小程序设置。

如果不再需要,什么取代了它,或者如何恢复相同的功能?我过去能够做的一件事是配置 Java 控制台出现的时间/方式。现在它再也没有出现过,而且显然我对此无能为力!

尽管我从未安装过 Java 7 JRE,但我已经按照本技术说明中的步骤重新启用了 Java 插件和 Web Start 功能。

我正在运行 OS X Mountain Lion 10.8.2。

java applet java-web-start java-6 osx-mountain-lion

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

使用try时资源泄漏...最终?

当我在此方法returntry块中的两个值中都出现资源泄漏警告时,我在Eclipse中正常工作:

@Override
public boolean isValid(File file) throws IOException
{
    BufferedReader reader = null;
    try
    {
        reader = new BufferedReader(new FileReader(file));
        String line;
        while((line = reader.readLine()) != null)
        {
            line = line.trim();
            if(line.isEmpty())
                continue;
            if(line.startsWith("#") == false)
                return false;
            if(line.startsWith("#MLProperties"))
                return true;
        }
    }
    finally
    {
        try{reader.close();}catch(Exception e){}
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

我不明白它会导致资源泄漏的原因,因为我是readertry作用域之外声明变量,在try块内添加资源,然后在另一个finally块中将其关闭以使用另一个try...catch忽略异常,而NullPointerExceptionif readernull出于某种原因...

据我所知,finally块总是在离开try...catch结构体时执行,因此在try块内返回值仍将finally …

java eclipse resources java-6 eclipse-juno

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

如何在Java 6中使用为Java 7编译的库?

我正在开发一个Java应用程序,我需要使用一个名为的jar myBeans.jar.

myBeans.jar包含许多使用jdk 1.7编译的类文件.我没有这些类文件的源代码.

我的整个应用程序使用的是jdk 1.6.我无法将其编译器更改为jdk 1.7.所以我希望我的jar与我的应用程序兼容.这就是为什么我希望用jdk 1.6编译jar的类.

现在我的问题是:有没有办法使用jdk 1.6编译类文件(而不是java文件)?

任何其他建议也欢迎.

有人建议我使用反编译器从类文件中获取源代码,然后使用jdk 1.6编译源代码.但是我最后会喜欢这个解决方案,因为有很多类文件.

java compilation java-6 java-7

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

避免超出PermGen内存和GC开销限制

我正在尝试生成类并在运行时加载它们.
我正在使用一个ClassLoader对象来加载类.因为我不想耗尽PermGen内存,所以我不时引用类加载器并创建一个新的加载要使用的新类.这似乎工作正常,我不会PermGen失去记忆.问题是,当我这样做时,一段时间后我得到以下错误:

java.lang.OutOfMemoryError: GC overhead limit exceeded 
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,什么时候我应该取消引用类加载器以避免错误?:
我应该在我的代码中监视PermGen用法,以便在取消使用接近限制System.gc()时取消引用类加载器并调用PermGen吗?
或者我应该采用不同的方法?
谢谢

java garbage-collection permgen classloader java-6

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

dateTimeFormat的有效掩码模式

我得到了使用dateTimeFormat函数的代码.原始开发人员使用了"MM-HH-YY-dd-NN"的面具.这段代码适用于他的机器.它适用于我们的测试服务器.但它在我的本地机器上不起作用.当我将面具改为"MM-HH-yy-dd-NN"时,我才能使它工作;

注意这里的差异是大写的"YY"和小写的"yy"

在查看https://wikidocs.adobe.com/wiki/display/coldfusionen/DateTimeFormat上的文档时,看起来小写yy是官方支持的处理方式.

有谁知道为什么YY会在某些情况下得到支持而不是其他情况?我怀疑它可能是某些本地化代码,但我发现我的CF管理员和测试服务器上没有任何差异.我能在机器上做些什么让YY工作吗?

我的机器是在Mac上运行的Windows 7 VM,而服务器是Windows服务器2008.

我的JVM是1.6.0_29,而服务器运行1.7.0

这些差异是否足以解释这个问题?

这是一些简单的测试代码:

<cfscript>
    testTime=now();
    lowermask= "MM-HH-yy-dd-NN";
    uppermask= "MM-HH-YY-dd-NN";
    result = {
        lower=dateTimeFormat(testTime, lowermask)
        ,upper=dateTimeFormat(testTime, uppermask)
    };
    writedump(result);
</cfscript>
Run Code Online (Sandbox Code Playgroud)

看起来问题出在底层Java版本中.我得到的错误是:

java.lang.IllegalArgumentException: Illegal pattern character 'Y'
    at java.text.SimpleDateFormat.compile(SimpleDateFormat.java:768)
    at java.text.SimpleDateFormat.initialize(SimpleDateFormat.java:575)
    at java.text.SimpleDateFormat.<init>(SimpleDateFormat.java:500)
    at coldfusion.util.DateUtils.getCFDateTimeFormat(DateUtils.java:673)
    at coldfusion.util.DateUtils.formatDateTime(DateUtils.java:942)
    at coldfusion.runtime.CFPage.LSDateTimeFormat(CFPage.java:1750)
    at coldfusion.runtime.CFPage.LSDateTimeFormat(CFPage.java:1742)
    at coldfusion.runtime.CFPage.DateTimeFormat(CFPage.java:1722)
    at cftemp2ecfm333879290.runPage(C:\inetpub\wwwroot\temp.cfm:7)
    at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244)
    at coldfusion.tagext.lang.IncludeTag.doStartTag(IncludeTag.java:444)
    at coldfusion.filter.CfincludeFilter.invoke(CfincludeFilter.java:65)
    at coldfusion.filter.IpFilter.invoke(IpFilter.java:64)
    at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:449)
    at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40)
    at coldfusion.filter.PathFilter.invoke(PathFilter.java:112)
    at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94)
    at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:79)
    at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28)
    at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38)
    at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:58)
    at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
    at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) …
Run Code Online (Sandbox Code Playgroud)

java coldfusion java-6 java-7

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

避免使用依赖于特定条件的对象创建的If-else代码气味

是否有更好的方法来处理对象(Product)的实例化,这取决于另一个对象类型(Condition)而不是使用if-else配对,instanceof如下面的代码所示?

import java.util.ArrayList;
import java.util.List;

abstract class AbstractProduct {
    private AbstractCondition condition;
    public AbstractProduct(AbstractCondition condition) {
        this.condition = condition;
    }
    public abstract void doSomething();
}

class ProductA extends AbstractProduct {
    AbstractCondition condition;
    public ProductA(AbstractCondition condition) {
        super(condition);
    }

    @Override
    public void doSomething() {
        System.out.println("I'm Product A");
    }
}

class ProductB extends AbstractProduct {    
    public ProductB(AbstractCondition condition) {
        super(condition);
    }   

    @Override
    public void doSomething() {
        System.out.println("I'm Product B");
    }
}

class AbstractCondition { }

class …
Run Code Online (Sandbox Code Playgroud)

java oop design-patterns instanceof java-6

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