package com.veltes;
import org.apache.velocity.app.VelocityEngine;
import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.exception.MethodInvocationException;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.runtime.RuntimeConstants;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;
import java.io.*;
public class velotest {
public static void main(String[] args) {
try {
VelocityEngine ve = new VelocityEngine();
ve.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
ve.init();
VelocityContext context = new VelocityContext();
context.put("name", "World");
Template t = ve.getTemplate("com/veltes/velotest.vm");
StringWriter writer = new StringWriter();
t.merge(context, writer);
System.out.println(writer.toString());
File logFile = new File("C:/users/xxxx/Desktop/velotest.html");
try {
writeFile(logFile, t, context);
}
catch (IOException io) {
}
} catch (Exception e) {
}
}
private static void writeFile(File logFile, Template t, VelocityContext context) throws IOException {
Writer logWriter;
logWriter = new BufferedWriter(new FileWriter(logFile));
try {
t.merge(context, logWriter);
}
catch (ResourceNotFoundException rnfe) {
}
catch (ParseErrorException pee) {
}
catch (MethodInvocationException mie) {
}
catch (Exception e) {
}
logWriter.flush();
logWriter.close();
}
}
group 'velocitytest'
version '1.0-SNAPSHOT'
apply plugin: 'groovy'
apply plugin: 'java'
sourceCompatibility = 1.5
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
compile 'org.codehaus.groovy:groovy-all:2.3.11'
testCompile group: 'junit', name: 'junit', version: '4.11'
compile 'velocity:velocity:1.4'
}
现在,当我运行Gradle Assemble
和Gradle Build
时,一切都很好,但是当我尝试运行项目时(在build/libs/中运行构建的jar和在IntelliJ中运行velotest类时也是如此),我会得到以下错误:
线程“main”java.lang.noClassDefFounderror:org/apache/commons/collections/extendedProperties
在org.apache.velocity.runtime.runtime.runtimeInstance.
在org.apache.velocity.app.velocityEngine.(velocityEngine.(velocityEngine.(velocityEngine.(velocityEngine.java:60)在java:62)
在sun.reflect.delegatingMethodAccessorImpl.invoke(delegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java:497)
在com.intellij.rt.execution.application.appmain.main(appmain.java:147)
在java.net.urlClassLoader.findclass(misc.launcher$AppClassLoader.LoadClass(launcher.java:331)
在java.lang.classloader.loadClass(classloader.java:357)
...8个以上
在build/tmp/
中没有jar有点奇怪,你们中有人知道解决方案吗?
如果希望能够运行jar,则需要创建一个可运行的jar。
您可以使用shadojar插件或扩展jar任务来将运行时deps打包到工件中。
jar {
archiveName = 'Name.jar'
manifest {
attributes 'Main-Class': 'your.main.class',
'Class-Path': configurations.runtime.files.collect { "lib/$it.name" }.join(' '),
'Implementation-Version': project.version
}
from(configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {}
}
对于intelliJ问题:
apply plugin: 'idea'
问题内容: 我试图在运行时将jar文件添加到classpath。我用这个代码 系统输出打印此URL: 我正在仔细检查此路径,此jar存在。即使这个测试也显示com.mysql.jdbc。驱动程序类存在。 但是,当我使用此Class.forName(driver)时,仍然会收到java.lang.ClassNotFoundException。此代码有什么问题? 问题答案: URL可以,但是您仍然尝试
问题内容: 根据我的阅读,执行以下命令时: 然后,将忽略主类路径,并从清单文件中获取类路径。 此外,在命令行上声明的类路径也将被忽略。所以在: /usr/local/jar/foobar.jar被忽略。 最后,我读过清单文件在jar文件中只能包含相对路径。 因此,如何包含系统上存在的外部jar的绝对路径,而不是正在执行的jar文件中的绝对路径? 问题答案: 您是否有理由避免像这样调用主类 ? 这种
问题内容: 运行单元测试时,我遇到了jar hell的问题。 我遇到了上述错误,并通过删除了不必要的jar文件解决了这些错误。 但是我面临以下两个jar的问题,即tomcat-embed-core-8.0.36.jar和hibernate- jpa-2.1-api-1.0.0.Final.jar。这两者之间有一个共同的类,我需要两个jar文件,任何人都可以向我解释如何解决此问题。我都需要jar文件
我有一个Java应用程序,它位于我编译为可执行jar文件的系统托盘中。我想在我的程序中添加添加到系统启动项的选项。 由于我不知道有什么统一的方法可以为所有操作系统做到这一点,我假设我必须为我打算支持的每个操作系统编写代码,所以我从Windows开始。 当我试图使用此处可用的代码将其添加到注册表中时,我发现在Windows 7和8下,除非我具有管理员权限(通过从提升的命令提示符运行),否则我对注册表
当我运行访问目录中其他文件的jar文件时,我得到以下: 线程“main”java.nio.file.nosuchfileException异常:src\filetobeaccessed.txt.lck在sun.nio.fs.windowsException.translateToioException(未知源)在sun.nio.fs.windowsException.reshrowasioExce
在一个项目中,我们将Hibernate与HikariCP结合使用,并且在Eclipse中一切都很好。但一旦我生成了一个jar文件(Maven),就再也找不到hikaricp了。我已经从各个可能的角度考虑了这个问题,但我无法找出问题所在。。。 坚持不懈xml 波姆。xml 如果我在Eclipse中运行此功能,则一切正常: 01:14:05,436信息HikariDataSource: 70-Hika