确定正确的路径JAVA_HOME在Ubuntu系统上有点复杂,因为它使用了替代方案.在我的机器上,这是替代方案在到达实际的java或javac之前至少创建两个间接层的方式.
usr/bin/javac -> /etc/alternatives/
/etc/alternatives/java -> /usr/lib/jvm/jdk1.7/bin/javac
Run Code Online (Sandbox Code Playgroud)
如果我设置JAVA_HOME为/usr/lib/jvm/jdk1.7,那么我的系统java可能会与指向的java不一致JAVA_HOME,如果我更新替代使用另一个java.
我的问题是,JAVA_HOME在使用替代品的系统上,正确的价值是什么.我倾向于认为JAVA_HOME应该这样做/usr
这样TOMCAT或使用它的任何其他软件都会将"bin"附加到JAVA_HOME并找到它需要的所有可执行文件.
这是JAVA_HOME使用替代品的系统的正确值.大多数软件JAVA_HOME仅用于查找可执行文件,还是使用该值来查找与JDK捆绑在一起的其他工件(例如安全策略文件等)?如果是前者的话,我觉得我们可以使用/usr的JAVA_HOME,但如果是后者,那么我想使用的唯一方法JAVA_HOME正确是通过牺牲的替代功能.
我想在同样的方法上同时使用@ Post和@Get
@GET
@POST
@Path("{mode}")
public void paymentFinish(@PathParam("mode") String mode, String s) {
logger.debug("Enter PayStatus POST");
logger.debug(mode);
}
Run Code Online (Sandbox Code Playgroud)
即使我这样写,我也有错误.我想要的是无论是获取还是发布到同一个方法,相同的方法都有效.可能吗?现在我将两个方法分开,一个用于get,一个用于post.
我对log4j很新.我不想在我的日志文件中显示异常堆栈跟踪,例如
java.lang.IllegalArgumentException: nodeRef is a mandatory parameter
at org.alfresco.util.ParameterCheck.mandatory(ParameterCheck.java:42)
Run Code Online (Sandbox Code Playgroud)
这些异常通过使用e.printStackTrace()类似的方式直接写入控制台
try {
// something
} catch(Exception e) {
StringWriter stack = new StringWriter();
e.printStackTrace(new PrintWriter(stack));
logger.debug("Caught exception; decorating with appropriate status template : " + stack.toString());
}
Run Code Online (Sandbox Code Playgroud)
我现在正在定制一个开源项目,而不是自己编写我的所有程序.所以不可能删除e.printStackTrace();所有的java文件.
据我所知,log4j用logger 打印的日志可以通过使用log4j错误级别来配置,例如info,debug,warn.But如何直接写入控制台或文件?
如何配置log4j不打印只有异常堆栈跟踪但显示其他信息?有办法解决吗?
我在使用maven编译时出现编译错误.
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] Unable to locate the Javac Compiler in:
C:\Program Files\Java\jre1.6.0_05\..\lib\tools.jar
Run Code Online (Sandbox Code Playgroud)
所以我设置JAVA_HOME环境变量但没有优势.错误似乎maven在jre路径中搜索java编译器,而不是JAVA_HOME.
JAVA_HOME是C:\Program Files\Java\jdk1.6.0_05.
已安装的JRE是C:\Program Files\Java\jre1.6.0_05.
我的PATH变量是:
C:\Program Files\PC Connectivity Solution\;D:\alfrescoplatform\ImageMagick;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\Wbem;C:\Program Files\ImageMagick-6.7.3-Q16;C:\Program Files\Java\jdk1.6.0_05\bin
这是我的详细日志
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building SpringMVC Maven Webapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.4.3:resources (default-resources) @ SpringMVC ---
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent! …Run Code Online (Sandbox Code Playgroud) 我想要做的是从Web服务器下载文件.当我跟踪代码时,两个程序员以不同的方式使用ByteArrayOutputStream和FileOutputStream来下载同一场景中的文件.这些是
案例1:用于ByteArrayOutputStream创建文件并下载.
案例2:用于FileOutputStream在Web服务器下临时创建文件并下载然后删除该文件.
PS:案例2文件大于案例1文件.
我可以用ByteArrayOutputStream这两种情况吗?FileOutputStream在第二种情况下是否有意使用?我想知道的是从性能和内存的角度来看.提前致谢.
我想搜索指定文件夹中的文档.我的意思是,如下面的情况,搜索mainfolder1的文件.我怎样才能做到这一点??有lucene可能?我知道lucene可以指定商店.我不知道文件夹.
- >公司回家
----> mainfolder1
-------> DOC1
-------> DOC2
----> mainfolder2
当我运行以下代码时,有两个结果.
package scjp;
public class ExceptionTest {
public static void main(String[] args) {
ExceptionTest test = new ExceptionTest();
test.method1();
}
public void method1() {
try {
System.out.println("Try Block");
if (!true) {
return;
} else {
throw new RuntimeException();
}
}finally {
System.out.println("Finally Block");
}
}
}
Run Code Online (Sandbox Code Playgroud)
一个结果是
Try Block
Exception in thread "main" java.lang.RuntimeException
at scjp.ExceptionTest.method1(ExceptionTest.java:17)
at scjp.ExceptionTest.main(ExceptionTest.java:7)
Finally Block
Run Code Online (Sandbox Code Playgroud)
和另外一个,
Try Block
Finally Block
Exception in thread "main" java.lang.RuntimeException
at scjp.ExceptionTest.method1(ExceptionTest.java:17)
at scjp.ExceptionTest.main(ExceptionTest.java:7)
Run Code Online (Sandbox Code Playgroud)
每次我运行上面的代码时,答案都在改变.在我的理解中,它应该始终是相同的结果.你能帮我点什么吗?
我想在覆盖 ftp 中的文件时增加次要文档版本。当我跟踪代码时,ContentDiskDriver2.truncateFile()适用于覆盖文件。在这个函数中我用它versionService来增加版本。以下代码编写在 truncateFile() try {
NodeRef nodeRef = getNodeForPath(tree, DriverContent.FILE_OPEN_PARAMS.getPath());
System.out.println("Node Ref: " + nodeRef);
// Increase minor version to file.
Map<String, Serializable> versionProperties = new HashMap<String, Serializable>(2, 1.0f);
versionProperties.put(Version.PROP_DESCRIPTION, "");
versionProperties.put(VersionModel.PROP_VERSION_TYPE, VersionType.MINOR);
VersionService versionService = (VersionService) applicationContext.getBean("versionService");
versionService.createVersion(nodeRef, versionProperties);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是我得到了这个错误。
2013-01-02 14:12:31,609 ERROR [org.alfresco.fileserver] [Sess_FTP3_192.168.1.166] Error from JLAN
org.alfresco.error.AlfrescoRuntimeException: 00020073 Transaction must be active and synchronization is required: Thread[Sess_FTP3_192.168.1.166,5,FTPSessions]
at org.alfresco.repo.transaction.AlfrescoTransactionSupport.registerSynchronizations(AlfrescoTransactionSupport.java:467)
at org.alfresco.repo.transaction.AlfrescoTransactionSupport.getSynchronization(AlfrescoTransactionSupport.java:451)
at org.alfresco.repo.transaction.AlfrescoTransactionSupport.getResource(AlfrescoTransactionSupport.java:244)
at org.alfresco.repo.transaction.TransactionalResourceHelper.incrementCount(TransactionalResourceHelper.java:71) …Run Code Online (Sandbox Code Playgroud)