我希望你能帮助我解决我面临的这个问题:
我使用NetBeans创建了一个简单的Web应用程序.截至目前,这是非常基本的.
/verificon/*url模式的请求./verificon/,即如果网址是http://domain/context/verificon/blahblah,则提取blahblah.但是,尽管很简单,但在使用测试字符串运行应用程序时出现以下错误:
javax.servlet.ServletException:
The server side component of the HTTP Monitor has detected a java.lang.StackOverflowError.
This happens when there is an infinite loop in the web module.
Correct the cause of the infinite loop before running the web module again.
org.netbeans.modules.web.monitor.server.MonitorFilter.rethrow(MonitorFilter.java:1648)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:473)
mx.tegu.kdor.web.iu.ServletVerificon.processRequest(ServletVerificon.java:51)
mx.tegu.kdor.web.iu.ServletVerificon.doGet(ServletVerificon.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
mx.tegu.kdor.web.iu.ServletVerificon.processRequest(ServletVerificon.java:51)
mx.tegu.kdor.web.iu.ServletVerificon.doGet(ServletVerificon.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
mx.tegu.kdor.web.iu.ServletVerificon.processRequest(ServletVerificon.java:51)
mx.tegu.kdor.web.iu.ServletVerificon.doGet(ServletVerificon.java:70)
...
Run Code Online (Sandbox Code Playgroud)
然后它不断重复自己.
我的servlet的processRequest方法如下.TestData只是一个辅助类,Mapeo如果字符串已知或不null存在,则返回一个对象.
protected void processRequest(HttpServletRequest request, HttpServletResponse …Run Code Online (Sandbox Code Playgroud) 我在mac上玩了Java 7 update 9,发现了一件有趣的事情.
我刚刚运行了一个带有a的简单Java程序JFrame,并附加了它lldb.然后我检查了这个Java程序加载的库,我看到:
"/System/Library/Frameworks/JavaVM.framework/JavaVM" 在里面.
所以我有两个问题:
这个JavaVM为Java 7做了什么?我认为mac上的Java 7与Windows和Linux上的相应版本一样是自洽的.通过使用"nm",我可以看到这个JavaVM定义了很多函数,比如JNI_CreateJavaVM,它也在libjvm.dylib中定义.
我应该用Java 7链接到JNI库?还在JavaVM.framework吗?我可以链接到位于下面的库
/Library/Java/JavaVirualMachine/jdk.1.7.0直接.
任何帮助都感激不尽.
以下代码在JDK7中使用javac编译两种测试方法,但JDK8只编译willCompile方法.
错误willNotcompile是:"类型中的方法method(Class<T>)Klasa不适用于参数(Class)."
@Test
public void willCompile() throws InstantiationException, IllegalAccessException {
Class klass = getObject(Class.class);
method(klass);
}
@Test
public void willNotCompile() throws InstantiationException, IllegalAccessException {
method(getObject(Class.class));
}
<T> ResponseEntity<T> method (Class<T> klasa) {
return new ResponseEntity<T>(HttpStatus.OK);
}
public static <T> T getObject(Class<T> clazz) throws IllegalAccessException, InstantiationException {
return clazz.newInstance();
}
Run Code Online (Sandbox Code Playgroud) 更精确的重新抛出允许编写抛出异常抛出的异常的代码:
public void foo(String bar) throws FirstException, SecondException {
try{
// Code that may throw both FirstException and SecondException
}
catch (Exception e){
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
在Java 7之前,你必须写:
public void foo(String bar) throws Exception {
try{
// Code that may throw both FirstException and SecondException
}
catch (Exception e){
throw e;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:是否有一个工具允许检测不精确的投掷,以便用" Exception" 替换" FirstException, SecondException"?
到目前为止,我已经检查过Eclipse中没有编译器警告.FindBugs或CodePro中没有规则.
我正在尝试从java程序创建300M文件,我从旧的文件API切换到新的java 7 nio包,但是新的包比旧的更慢.
我看到的CPU利用率低于使用旧文件API时的CPU利用率,但我正在运行这个简单的代码,我得到0.5Mbytes/sec的文件传输速率,而java的写入正在读取一个磁盘并写入另一个(写入是访问磁盘的唯一进程).
Files.write(FileSystems.getDefault().getPath(filePath), fiveToTenKBytes, StandardOpenOption.CREATE);
Run Code Online (Sandbox Code Playgroud)
有没有希望在这里获得合理的吞吐量?
更新:
我正在从大文件中解包3亿个5-10k字节的图像文件.我有3个磁盘,1个本地磁盘和2个SAN连接(大型文件的典型吞吐率约为20MB /秒).
我也尝试过这段代码,它将速度提高到不到2MB /秒的吞吐量(解压缩这些文件需要9天).
ByteBuffer byteBuffer = ByteBuffer.wrap(imageBinary, 0, (BytesWritable)value).getLength());
FileOutputStream fos = new FileOutputStream( imageFile );
fos.getChannel().write(byteBuffer);
fos.close();
Run Code Online (Sandbox Code Playgroud)
我从本地磁盘读取并写入SAN连接磁盘.我正在阅读Hadoop SequenceFile格式,hadoop通常能够使用基本相同的代码以20MB /秒的速度读取这些文件.
除了超级缓慢之外,唯一看起来不合适的是,我看到更多的读取IO比写入IO大约2:1,尽管序列文件是gziped(图像实际上比例为1:1),所以压缩文件应该是约.输出1:1.
第二次更新
看着iostat我看到一些奇怪的数字,我们在这里看xvdf,我有一个java进程读取xvdb和写入xvdf并且没有活动的ohter进程xvdf
iostat -d 30
Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
xvdap1 1.37 5.60 4.13 168 124
xvdb 14.80 620.00 0.00 18600 0
xvdap3 0.00 0.00 0.00 0 0
xvdf 668.50 2638.40 282.27 79152 8468
xvdg 1052.70 3751.87 2315.47 112556 69464 …Run Code Online (Sandbox Code Playgroud) 我需要在内存中保存给定目录下的所有文件名绝对路径.
myDirectory.list() - 仅检索文件名的String [](没有它们的绝对路径).
不想使用文件对象,因为它消耗更多内存.
最后一件事 - 我可以使用apache集合等(但没有找到任何有用的东西).
我一直在制作倒计时节目,我想出了这个.
package main;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class Gatoo extends JFrame implements ActionListener {
private int sec, min, secTot, since = 999;
private long lastTime;
private JTextField mm = new JTextField(2), ss = new JTextField(2);
private JLabel minLab = new JLabel("Minutes:"), secLab = new JLabel(
"Seconds:");
private JButton start = new …Run Code Online (Sandbox Code Playgroud) Java 7 update 51具有java安全级别,默认情况下设置为HIGH.我想通过使用注册表或添加任何文件将其更改为中等.我观察到手动将安全级别从高级别更改为中级会创建注册表
[HKEY_CURRENT_USER\Software\JavaSoft\DeploymentProperties]
"deployment.security.level"="MEDIUM"
Run Code Online (Sandbox Code Playgroud)
但是,如果我手动创建上述注册表,则java安全设置不会更改,并且创建的注册表将被删除.所以我认为必须有其他文件来做到这一点.那么如何更改java安全设置呢?我看过一些文章和论坛链接,但没有得到我想要的.此外,这不是为我的客户设置安全级别,而是我的办公室,员工数量需要更改此设置(所有都是Windows操作系统),如果有代码或注册表项等自动化将很容易.
我想在Mac OSX Mavericks上安装eclipe Indigo SR2,当我在终端中启动./eclipse时收到了这条消息:
警报:无法创建Java虚拟机
而在终端:
JavaVM: Failed to load JVM: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/bundle/Libraries/libserver.dylib
JavaVM FATAL: Failed to load the jvm library.
Run Code Online (Sandbox Code Playgroud)
我在我的系统上有这个:
java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud) 我正在尝试在Windows 10上安装TMC Netbeans版本.我收到此错误:
在此计算机上找不到Java SE Development Kit(JDK)
使用TMC 1.1.8安装Netbeans需要JDK 7.确保已正确安装JDK并再次运行安装程序.您可以使用--javahome installer参数指定有效的JDK位置.
我使用常规版本的Netbeans得到了同样的错误.我知道它安装正确,因为我让IntelliJ工作得很好.我该如何解决这个问题?我一直在寻找答案,但我还没有为Windows 10找到任何东西?
另外,我安装了JDK 9.