我有一个应用程序,它已经在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);" 有异常的行: …
我试图找到一个问题的最佳解决方案,我将映射一个简单的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类,因为它不会影响旧服务的使用者.
谢谢.
我有一个有效的ArrayList对象形式java.lang.Object.我必须再次转换Object为ArrayList.我试过这个:
Object obj2 = from some source . . ;
ArrayList al1 = new ArrayList();
al1 = (ArrayList) obj2;
System.out.println("List2 Value: "+al1);
但它是印刷品null.我怎样才能做到这一点?
我的旧项目使用Java 6(1.6),我不知道何时更新(Java 7),它们可以正常运行?
我知道这个问题的肆虐重复这个问题.但是,我现在已经阅读了整个页面两次,有些部分已经阅读了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 …
使用非常简单的Mockito运行JUnit测试和类,当使用Java 1.6.0_32和Java 1.7.0_04运行测试时,我看到不同的输出,并且想要理解为什么会发生这种情况.我怀疑有一些类型的擦除正在进行,但想要一个确定的答案.
这是我的示例代码和如何从命令行运行的说明:
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)
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) 我有一个使用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) Java 6接口MultivaluedMap有什么用?
我是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) 以下代码:
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 进行编译?这在任何地方都有记录吗?