令我惊讶的是,下面的代码打印出两次"关闭".通过调试器,它似乎MyPrintStream.close()
调用super.close()
,最终MyPrintStream.close()
再次调用.
import java.io.*;
public class PrintTest
{
static class MyPrintStream extends PrintStream
{
MyPrintStream(OutputStream os)
{
super(os);
}
@Override
public void close()
{
System.out.println("Close");
super.close();
}
}
public static void main(String[] args) throws IOException
{
PrintStream ps = new MyPrintStream(new FileOutputStream(File.createTempFile("temp", "file")));
ps.println("Hello");
ps.close();
}
}
为什么会这样?我不应该扩展PrintStream吗?
据我了解,J2EE容器需要包含JMS提供程序.独立Java应用程序是否可以将消息发送到容器提供的JMS队列?如果是这样,我如何从容器外部访问JNDI查找?
(我正在尝试使用Geronimo,如果它有任何区别,但我希望有一种标准的方法来做到这一点.)
我试图寻找一个QueueConnectionFactory
和Queue
通过Geronimo的JNDI.在Queue
获取返回正常,但QueueConnectionFactory
查找始终返回null.它不会抛出一个NamingException
,如果JNDI名称不正确,这就是我所期望的.
谁能看到我做错了什么?下面的测试代码输出:
true false
import javax.jms.Queue;
import javax.jms.QueueConnectionFactory;
import javax.naming.InitialContext;
import javax.naming.NamingException;
public class JndiTest
{
private final static String QUEUE_NAME = "jca:/org.apache.geronimo.configs/activemq-ra/JCAAdminObject/SendReceiveQueue";
private final static String FACTORY_NAME = "jca:/org.apache.geronimo.configs/activemq-ra/JCAManagedConnectionFactory/DefaultActiveMQConnectionFactory";
public static void main(String[] args) throws NamingException
{
InitialContext ctx = new InitialContext();
QueueConnectionFactory factory = (QueueConnectionFactory) ctx.lookup(FACTORY_NAME);
Queue queue = (Queue)ctx.lookup(QUEUE_NAME);
System.out.println(factory == null);
System.out.println(queue == null);
}
}
Run Code Online (Sandbox Code Playgroud)
如果它有所不同:我已将openejb-client-3.0.1.jar,geronimo-ejb_3.0_spec-1.0.1.jar和activemq-core-4.1.2-G20090207.jar添加到我的类路径中,并且我的jndi.properties文件具有以下属性:
java.naming.factory.initial = org.apache.openejb.client.RemoteInitialContextFactory java.naming.provider.url = ejbd://127.0.0.1:4201
如何以encoding
编程方式查找SAS全局选项?我可以跑proc options
,它会给我答案,但我需要从代码中做到.
我希望得到一个"看宏符号和sysencoding"的答案,但这可能是太多希望了.我宁愿避免像写入外部文件和重新解析等脆弱的事情.
我正在尝试m2eclipse,Maven的Eclipse插件,并注意到资源现在被排除在我所有项目的构建路径之外.
我在M2Eclipse常见问题解答页面上看到了一个似乎处理这个确切问题的问题,但答案(解释)似乎是说这是故意允许资源过滤,一切都应该正常工作.
但是,当我从Eclipse中运行我的应用程序时,依赖项目中的大量资源无法被我的应用程序找到.
我尝试过我常用的Eclipse挥动 - 橡皮鸡动作(清洁所有项目,从-clean开始)无济于事.我敢肯定我错过了一些相当简单的东西.有没有人有什么建议?
编辑:m2控制台中的一些挖掘显示其中一个项目没有正确构建.ClassNotFoundException
当它试图找到org.apache.maven.plugin.MojoFailureException
用于构建其中一个项目的自定义插件时,我得到了一个.
org.apache.maven.lifecycle.LifecycleExecutionException: Internal error in the plugin manager executing goal 'ourdemain:ourcustomplugin:2.0:process': Mojo execution failed. at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:505) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmentForProject(DefaultLifecycleExecutor.java:265) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:191) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:149) at org.apache.maven.DefaultMaven.execute_aroundBody0(DefaultMaven.java:223) at org.apache.maven.DefaultMaven.execute_aroundBody1$advice(DefaultMaven.java:304) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:1) at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody2(MavenEmbedder.java:904) at org.apache.maven.embedder.MavenEmbedder.execute_aroundBody3$advice(MavenEmbedder.java:304) at org.apache.maven.embedder.MavenEmbedder.execute(MavenEmbedder.java:1) at org.maven.ide.eclipse.internal.project.DefaultBuildParticipant$1.execute(DefaultBuildParticipant.java:130) at org.maven.ide.eclipse.internal.project.MavenProjectManagerImpl.execute(MavenProjectManagerImpl.java:986) at org.maven.ide.eclipse.internal.project.MavenProjectFacade.execute(MavenProjectFacade.java:320) at org.maven.ide.eclipse.internal.project.DefaultBuildParticipant.executePostBuild(DefaultBuildParticipant.java:116) at org.maven.ide.eclipse.internal.project.DefaultBuildParticipant.build(DefaultBuildParticipant.java:80) at org.maven.ide.eclipse.internal.builder.MavenBuilder.build(MavenBuilder.java:84) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:633) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:170) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:201) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:253) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:256) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:309) at …
当我遇到JVM崩溃时,我应该做什么(作为一个对JVM内部不了解的Java程序员)呢?
特别是,您将如何生成可重现的测试用例?我应该在Sun(或IBM)的bug数据库中搜索什么?我可以从生成的日志文件中获得哪些信息(例如hs_err_pidXYZ.log
)?
我们在一些涉及"协调世界时"时区的Windows XP机器上看到了一个奇怪的问题.并非所有的Windows XP机器似乎都拥有它,但在那些机器上,以下是简单的Java程序
public class TimeTest {
public static void main(String[] args) {
System.out.println(java.util.TimeZone.getDefault());
System.out.println(new java.util.Date());
}
}
Run Code Online (Sandbox Code Playgroud)
在JDK 1.6.0_06上打印:
sun.util.calendar.ZoneInfo[id="America/Caracas",offset=-16200000,dstSavings=0,useDaylight=false,transitions=5,lastRule=null] Fri Nov 13 05:34:14 VET 2009
(即比格林威治标准时间晚4个半小时).我应该补充一点,我的总部设在伦敦,从未去过南美洲.:-)
我的问题是:
我有几个hudred千行文本文件.我必须在随机点中提取30,000个特定行,这些行都在文本文件中.这是我必须一次提取一行的程序:
big_file = open('C:\\gbigfile.txt', 'r')
small_file3 = open('C:\\small_file3.txt', 'w')
for line in big_file:
if 'S0414' in line:
small_file3.write(line)
gbigfile.close()
small_file3.close()
Run Code Online (Sandbox Code Playgroud)
如何加速我需要查看的30,000行>?
struct myStruct
{
short int myarr[1000];//want to initialize all elements to 0
}
Run Code Online (Sandbox Code Playgroud)
如何初始化阵列?
我尝试short int* myarr[1000]={0}
在结构中做,但这是错误的.我怎样才能做到这一点?我不介意在实现文件中这样做.此结构包含在头文件中.
当C中的宏和函数冲突出现时会引发什么错误?是宏处理器错误还是由于某些语言违规而发生此错误?
例如,在此代码中:
#include <stdio.h>
#define MAX(i, j) (i>j)? i : j
int MAX(int i, int j){
return (i>j) ? i : j;
}
int main(){
int max = MAX(5, 7);
printf("%d",max);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序抛出编译时错误.但我不明白它是否是某种语言违规或宏扩展错误或其他原因.
尝试写入.xlsx文件时JVM崩溃.我正在使用POI(XSSF).代码中的错误位置点是写入method--> workBook.write(fileOutputStream);
在控制台我得到..
A fatal error has been detected by the Java Runtime Environment:
SIGBUS (0x7) at pc=0xb68d77f3, pid=14653, tid=1849355120
JRE version: 7.0_04-b20
Java VM: Java HotSpot(TM) Server VM (23.0-b21 mixed mode linux-x86 )
Problematic frame:
C [libzip.so+0x47f3] newEntry+0x73
Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
If you would like to submit a bug report, please visit:
http://bugreport.sun.com/bugreport/crash.jsp
The crash happened outside the Java …
Run Code Online (Sandbox Code Playgroud) 我在Oracle中编写了一个存储过程,现在,我想用Java代码启动它.我将描述一个问题.我有一个对象类型:
TYPE PERSON_TYPE AS OBJECT (ID NUMBER(38), NAME VARCHAR2(20));
Run Code Online (Sandbox Code Playgroud)
和表类型:
TYPE PERSON_TYPE_TABLE AS TABLE OF PERSON_TYPE;
Run Code Online (Sandbox Code Playgroud)
我的程序看起来像这样:
PROCEDURE EVALUATE_PERSON_PROC(P_PERSON_ID IN NUMBER, return_data OUT NOCOPY PERSON_TYPE_TABLE)
AS
--Some code
BEGIN
--Some code
END;
Run Code Online (Sandbox Code Playgroud)
如何在Java代码中启动此过程?哪个班级最好?
在Oracle的regexp_replace
功能,有一个参数replace_string
,可以在其中指定反向引用\1
到\9
.
有没有办法在第9个之后引用反向引用?Oracle将其\10
视为\1
文字0
.
java ×8
c ×2
crash ×2
java-ee ×2
jms ×2
jvm ×2
oracle ×2
apache-poi ×1
arrays ×1
eclipse ×1
function ×1
geronimo ×1
header-files ×1
inheritance ×1
jdbc ×1
jndi ×1
jvm-crash ×1
m2eclipse ×1
macros ×1
maven-2 ×1
plsql ×1
printstream ×1
python ×1
regex ×1
sas ×1
struct ×1
timezone ×1
utc ×1
windows ×1