标签: java-6

Java方法适用于1.5但不适用1.6

我有一个应用程序,它已经在Java 1.5下运行了大约一年.我们刚刚更新了盒子并安装了Java 1.6.

在将应用程序部署到新服务器之后,我们发现应用程序在尝试转换某些XML时会抛出异常.我们无法理解为什么会发生这种情况,直到我们在本地部署并发生同样的情况.将SDK更改为v1.5后问题停止,应用程序运行正常.

这是方法的来源:

import java.io.StringWriter;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Element;
import org.w3c.dom.Node;


   public static String xmlToString(Node node) {
    try {
        Source source = new DOMSource(node);
        StringWriter stringWriter = new StringWriter();
        Result result = new StreamResult(stringWriter);
        TransformerFactory factory = TransformerFactory.newInstance();
        Transformer transformer = factory.newTransformer();
        transformer.transform(source, result);
        return stringWriter.getBuffer().toString();
    } catch (TransformerConfigurationException e) {
        e.printStackTrace();
    } catch (TransformerException e) {
        e.printStackTrace();
    }
    return null;
   }
Run Code Online (Sandbox Code Playgroud)

它正在崩溃"transformer.transform(source,result);" 有异常的行: …

java xml incompatibility java-5 java-6

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

复杂Bean映射

我试图找到一个问题的最佳解决方案,我将映射一个简单的bean结构映射到基于浏览器的JavaScript应用程序.当前的要求是管理旧Java后端的大部分显示控制.目前我们有一个服务样式层,它生成的值对象没有内置的显示逻辑,如:

public class Example1 {
    String value1;
    Boolean value2;
    Example3 value3;

    public String getValue1(){...}
    public void setValue1(){...}
    ....
 }
Run Code Online (Sandbox Code Playgroud)

我的目标是能够在所有字段上映射通用结构,以便添加前端所需的新显示结构.我想只管理原始结构类(Example1类)结构,只需在包装器中将额外值设置为旧服务层.

通用结构将采用以下类的形式:

public class Presentable<T> {
    T value;
    boolean visible = true; 
    boolean mandatory = false;
    List<String> errors = new ArrayList<>();

    public T getValue() {...}
    public void setValue(T value) {...}
    ...
}
Run Code Online (Sandbox Code Playgroud)

最终结果类似于以下内容,其中value等于原始结构中的值:

public class Example2{
    Presentable<String> value1;
    Presentable<Boolean> value2;
    Presentable<Example3> value3;

    public Presentable<String> getValue1(){...}
    public void setValue1(){...}
    ...
}
Run Code Online (Sandbox Code Playgroud)

没有编写Example2样式类并复制每个值,是否有解决此问题的方法?我愿意修改Example1类,因为它不会影响旧服务的使用者.

谢谢.

java javabeans java-ee java-6

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

如何将java.lang.Object转换为ArrayList?

我有一个有效的ArrayList对象形式java.lang.Object.我必须再次转换ObjectArrayList.我试过这个:

Object obj2 = from some source . . ;
ArrayList al1 = new ArrayList();
al1 = (ArrayList) obj2;
System.out.println("List2 Value: "+al1);

但它是印刷品null.我怎样才能做到这一点?

java java-6

12
推荐指数
5
解决办法
8万
查看次数

旧项目与Java 7兼容

我的旧项目使用Java 6(1.6),我不知道何时更新(Java 7),它们可以正常运行?

java backwards-compatibility java-6 java-7

11
推荐指数
2
解决办法
9401
查看次数

Java 6文件删除

我知道这个问题的肆虐重复这个问题.但是,我现在已经阅读了整个页面两次,有些部分已经阅读了3次,而对于我的生活,我看不出它是如何/在哪里被回答的!

所以,关于我的问题.

我正在工作,我被困在使用Java 6 SE并且无法升级到7.我正在编写一个程序,它创建一个文件,写入它,进行一些处理,然后需要删除该文件.我遇到了与上面提到的问题的人完全相同的问题:Java不会删除文件,我无法弄清楚原因.

代码:

File f = null;
FileWriter fw = null;
try
{
    f = new File("myFile.txt");
    fw = new FileWriter(f);
    fw.write("This is a sentence that should appear in the file.");
    fw.flush();
    if(f.delete())
        System.out.println("File was successfully deleted.");
    else
        System.err.println("File was not deleted.");
}
catch(Exception exc)
{
    System.err.println(exc.getMessage());
}
catch(Error er    {
    System.err.println(er.getMessage());
}
catch(Throwable t)
{
    System.err.println(t.getMessage());
}
finally
{
    fw.close();
}
Run Code Online (Sandbox Code Playgroud)

它不会抛出任何抛出物,错误或异常(我包括那些排除任何和所有边缘情况).第二个print语句("File was not deleted.")正在打印到控制台.我在Windows 7上运行它,并写入我拥有完全权限(rwx)的文件夹.

用户问我引用的问题回答了他自己的问题,但是(以我的拙见)以一种不那么直接的方式这样做了.无论如何,我无法理解它.他/她似乎暗指使用a BufferedReader …

java io file java-6

11
推荐指数
2
解决办法
8324
查看次数

@InjectMocks与Java 6和7的行为不同

使用非常简单的Mockito运行JUnit测试和类,当使用Java 1.6.0_32和Java 1.7.0_04运行测试时,我看到不同的输出,并且想要理解为什么会发生这种情况.我怀疑有一些类型的擦除正在进行,但想要一个确定的答案.

这是我的示例代码和如何从命令行运行的说明:

FooServiceTest.java

import org.junit.*;
import org.junit.runner.*;
import org.mockito.*;
import org.mockito.runners.MockitoJUnitRunner;
import static org.mockito.Mockito.*;
import java.util.*;

@RunWith(MockitoJUnitRunner.class)
public class FooServiceTest {
  @Mock Map<String, String> mockStringString;
  @Mock Map<String, Integer> mockStringInteger;

  @InjectMocks FooService fooService;

  public static void main(String[] args) {
    new JUnitCore().run(FooServiceTest.class);
  }

  @Before
  public void setup() {
    MockitoAnnotations.initMocks(this);
  }

  @Test
  public void checkInjection() {
    when(mockStringString.get("foo")).thenReturn("bar");
    fooService.println();
  }
}
Run Code Online (Sandbox Code Playgroud)

FooService.java

import java.util.*;

public class FooService {
  private Map<String, String> stringString = new HashMap<String, String>();
  private Map<String, Integer> stringInteger …
Run Code Online (Sandbox Code Playgroud)

java type-erasure mockito java-6 java-7

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

从Java6升级到Java7后,Kerberos崩溃了

我有一个使用spring-security kerberos扩展的工作应用程序,在jboss上运行,运行java 6.

我正在将我的jvm从java 6升级到java 7.当我这样做时,使用相同的代码库和在java 6上工作的相同keytab,我现在在使用java 7时收到错误.

我一直收到:java.security.PrivilegedActionException:GSSException:在GSS-API级别未指定失败(机制级别:无效参数(400) - 无法找到适当类型的密钥以使用HMAC解密AP REP-RC4)

我试图用其他论坛中描述的不同/加密选项重新生成密钥表,但无济于事.

我已经调试了java 7代码,实际上,处理启动时读取keytab的类从6更改为7.可能是因为我的keytab不再正确读入应用程序了吗?我在启动时使用Java6看到的一些调试消息在7中不再出现了,但我不知道这是设计还是表明其他内容正在发挥作用?有没有其他人有问题从6升级到7并且他们的kerberos集成打破了他们?有什么建议?

使用spnego和kerberos调试登录进行启动,我的日志显示:

2012-12-10 10:29:30,886  Debug is  true storeKey true useTicketCache false useKeyTab true doNotPrompt true ticketCache is null isInitiator false KeyTab is jndi:/localhost/docfinity/WEB-INF/classes/config/common/security/http-docfinity.keytab refreshKrb5Config is false principal is HTTP/VMMSSDEV.TESTING.LOCAL@TESTING.LOCAL tryFirstPass is false useFirstPass is false storePass is false clearPass is false
2012-12-10 10:30:26,322  principal is HTTP/VMMSSDEV.TESTING.LOCAL@TESTING.LOCAL
2012-12-10 10:30:29,794  Will use keytab
2012-12-10 10:30:29,807  Ordering keys wrt default_tkt_enctypes list
2012-12-10 10:30:29,821  Config name: C:\Windows\krb5.ini
2012-12-10 10:30:29,827  Using …
Run Code Online (Sandbox Code Playgroud)

kerberos spring-security spnego java-6 java-7

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

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

在xamarin中找不到AndroidSdk

我是c#以及Xamarin的初学者.我安装了Visual studion和Xamarin,但是当我尝试使用Xamarin创建一个新项目时,它会在输出窗口中显示以下错误.

 [I:sdk]:                  Looking for Android SDK..
    [I:sdk]:                    Key HKCU\SOFTWARE\Novell\Mono for Android\AndroidSdkDirectory not found.
    [I:sdk]:                    Key HKLM\SOFTWARE\Novell\Mono for Android\AndroidSdkDirectory found:
        Path does not contain adb.exe in \platform-tools (C:\android-sdk-windows).
    [I:sdk]:                    Key HKCU\SOFTWARE\Xamarin\MonoAndroid\PrivateAndroidSdkPath not found.
    [I:sdk]:                    Key HKCU\SOFTWARE\Android SDK Tools\Path not found.
    [I:sdk]:                    Key HKLM\SOFTWARE\Android SDK Tools\Path found:
        Path does not contain adb.exe in \platform-tools (C:\Program Files (x86)\Android\android-sdk).
    [I:sdk]:                  Looking for Android NDK..
    [I:sdk]:                    Key HKCU\SOFTWARE\Novell\Mono for Android\AndroidNdkDirectory not found.
    [I:sdk]:                    Key HKLM\SOFTWARE\Novell\Mono for Android\AndroidNdkDirectory not found.
    [I:sdk]:                    Key HKCU\SOFTWARE\Novell\Mono for Android\JavaSdkDirectory …
Run Code Online (Sandbox Code Playgroud)

sdk xamarin.android java-6 xamarin visual-studio-2015

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

运算符“+”不能应用于对象和字符串

以下代码:

void someMethod(Object value)
{
    String suffix = getSuffix();
    if (suffix != null)
        value += suffix;

    [...]
}
Run Code Online (Sandbox Code Playgroud)

在 JDK 8 中编译没有错误(使用 -source 1.6),但在 JDK 6 中失败并显示错误消息:

Operator '+' cannot be applied to java.lang.Object and java.lang.String
Run Code Online (Sandbox Code Playgroud)

虽然我确实理解错误是关于什么的,但为什么使用 JDK 8 进行编译?这在任何地方都有记录吗?

java javac java-6 java-8

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