`

Quartz取本項目路徑的問題

阅读更多

爲了項目中可以定期定時的生成某些報表。比如定期生成貨幣匯率表,國家之間的話費通訊費用。於是運用了 Quartz 框架,以任務調度的方式來完成這些任務。

但是在輸出報表的時候,發現 ServletActionContext.getServletContext().getRealPath("/") 獲取不到本 web 的根目錄。後來搜索很多資料,才了解到。 Quartz 是獨立與另個線程,它的上下文不是 struts2 中類 ServletActionContext 的上下文 ( 本項目用 struts2 框架 ) ,而是自己類 JobExecutionContext 的上下文。所以是取不到本項目的根目錄。

後來,我采用的方法是, ClassLoader 类提供的一些方法解決的。

先獲得 classpath 的路徑,然後解析出本項目的根目錄,也許這樣編碼兼容性不是很好,但是暫時是這么解決的。部分代碼如下:

String temp = Constant.class.getResource("/").getPath();   // 獲取 classpath 路徑

temp = temp.substring(0, temp.lastIndexOf("WEB-INF"));  //WEB-INF 上一級就是項目的根目錄

File f = new File(temp);

……

應該有更好的解決辦法,希望大家能給出一點建議。

 

這篇文章 http://louisyoo.blog.ccidnet.com/blog-htm-do-showone-uid-41414-type-blog-itemid-217488.html ,對路徑問題做了比較詳細的說明。

1 Constant.class.getResource("").getPath()
得到的是当前类 FileTest.class 文件的 URI 目录。如 \E:\6.0\workspace\28TEL_service\WEB-INF\classes\com.top.tel.constant

2 Constant.class.getResource("/").getPath()
得到的是当前的 classpath 的绝对 URI 路径。如: \E:\6.0\workspace\28TEL_service\WEB-INF\classes

3 Constant.currentThread().getContextClassLoader().getResource("").getPath()
得到的也是当前 ClassPath 的绝对 URI 路径。如: \E:\6.0\workspace\28TEL_service\WEB-INF\classes

4 Constant.class.getClassLoader().getResource("").getPath()
得到的也是当前 ClassPath 的绝对 URI 路径。如: \E:\6.0\workspace\28TEL_service\WEB-INF\classes
5
ClassLoader.getSystemResource("").getPath()
得到的也是当前 ClassPath 的绝对 URI 路径。如: \E:\6.0\workspace\28TEL_service\WEB-INF\classes

分享到:
评论

相关推荐

    quartz3个版本 v1.7.3 v2.2.1 v2.2.2

    选择合适的版本取决于项目的需求和兼容性,而使用这些jar包,开发者可以将精力集中在业务逻辑上,而不是担心如何控制任务的执行时间。无论是在小型项目还是大型企业系统中,Quartz都能展现出其灵活性和实用性。

    QUARTZ项目实练

    【QUARTZ项目实练】 QUARTZ是一个开源的作业调度框架,广泛应用于Java环境中的任务调度。在本次实练中,我们将利用QUARTZ来实现一个基于数据表配置的定时任务轮询执行。这个练习将涵盖QUARTZ的核心概念、Cron表达式...

    quartz-2.2.3版本的quartz初始化sql语句

    Quartz是一款广泛使用的开源任务调度框架,它允许开发者在Java应用程序中定义和执行定时任务。在Quartz 2.2.3版本中,初始化数据库是使用Quartz的关键步骤,因为Quartz依赖于一个持久化存储来保存作业和触发器的信息...

    quartz小项目

    在这个"quartz小项目"中,我们可能会遇到以下关键知识点: 1. **Quartz介绍**:Quartz是一个完全由Java编写的开源作业调度框架,它可以用来执行定时任务。Quartz的核心是Job和Trigger,Job代表要执行的任务,...

    quartz所需jar包 1.6.0、1.8.5、2.2.1三个版本

    Quartz是一款广泛应用于Java环境中的开源任务调度框架,它允许开发者定义、安排和执行复杂的定时...同时,根据项目需求,可能需要了解并配置Quartz的各种配置选项,如数据源、触发器策略等,以实现最佳的定时任务调度。

    Quartz2D-根据路径绘制

    博客代码---- Quartz2D中还有以CGPath开头的API,Path我们称之为路径,我们之前用Quartz2D画出的东西都是沿着一条路径去画的。 而这次我们将来学一下如何先将路径定好之后,再将路径放入图层上下文中。

    springboot整合quartz完整项目

    在SpringBoot项目中集成Quartz,首先需要在`pom.xml`文件中添加Quartz和SpringBoot对Quartz的支持依赖。接着,在配置文件(如`application.yml`或`application.properties`)中配置Quartz的相关参数,如数据库连接...

    quartz2D绘图代码(使用路径)

    "PathTest"很可能是项目中的一个测试文件,可能包含了创建和使用路径的代码示例。通常,这样的代码会创建一个CGPath对象,添加必要的点,然后在视图的`drawRect:`方法中使用`CGContextAddPath()`和`...

    Quartz 最新2.2.3版本所有jar包

    此外,Quartz提供了丰富的API和配置选项,使得开发者可以根据项目需求定制化任务调度策略。例如,可以通过XML配置文件来定义作业和触发器,或者使用编程方式动态添加和修改任务。 总的来说,Quartz 2.2.3版本的jar...

    Quartz.NET Demo 项目源码

    这个"Quartz.NET Demo 项目源码"提供了对Quartz.NET功能的一个直观展示,帮助开发者更好地理解和应用这个强大的任务调度库。 在Quartz.NET中,作业是执行的具体任务,而触发器则是决定何时执行这些任务的规则。通过...

    spring+quartz+maven项目实例

    【标题】"Spring+Quartz+Maven项目实例"是一个基于Spring框架集成Quartz作业调度库的实战项目,采用Maven作为构建工具。这个实例旨在展示如何在Java应用程序中实现定时任务,支持两种运行模式,既可以直接以独立的...

    quartz_2.3.0 SQL脚本

    升级到这个版本时,用户需要注意与旧版本之间的兼容性问题,以及可能需要调整的代码或配置。 总的来说,Quartz是一个强大的作业调度库,通过提供针对不同数据库的脚本,确保了其在多样的IT环境中都能高效运行。了解...

    Quartz动态项目案例。

    本项目案例是关于Quartz动态任务设置的一个实践,旨在帮助开发者更好地理解和运用Quartz进行灵活的任务调度。 首先,Quartz的核心概念包括作业(Job)、触发器(Trigger)和计划程序(Scheduler)。作业是你想要...

    quartz 项目学习源码

    在这个"quartz 项目学习源码"中,你可以深入理解 Quartz 的工作原理和实现方式。 1. **Quartz 基本概念**: - **Job**:Quartz 中的 Job 是执行任务的基本单元,代表一个待执行的工作。 - **Trigger**:触发器...

    Quartz持久化资料大全

    综上,Quartz持久化是保证定时任务不因系统重启而丢失的关键技术,它与Spring的集成使得配置更为灵活,而Quartz版本间的兼容性则保证了项目的平滑升级。在实际开发中,理解并掌握这些知识点对于充分利用Quartz的功能...

    Quartz学习的eclipse项目的实例

    Quartz的库可以通过Maven或者直接下载JAR文件添加到项目的类路径中。 接下来,我们需要创建一个Job类,实现Job接口并编写execute方法。例如,你可以创建一个简单的打印消息的Job: ```java public class MyJob ...

    quartz1.5,quartz1.6,quartz1.8

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表

    关于spring中quartz的配置

    在开始配置之前,首先需要在项目的`pom.xml`或`build.gradle`文件中引入Quartz和Spring相关的依赖库。对于Maven项目,可以添加如下依赖: ```xml <groupId>org.quartz-scheduler <artifactId>quartz ...

    quartz-1.6.0.jar和quartz-all-1.6.0.jar

    使用这个JAR包,开发者无需额外管理依赖,可以更方便地在项目中快速引入Quartz。 Spring与Quartz的集成是另一个重要的知识点。Spring框架提供了一种优雅的方式来管理和配置Quartz,使得我们可以利用Spring的依赖...

    Quartz 2.2.2数据库表格脚本

    Quartz 是一个开源的作业调度框架,广泛应用于Java应用程序中,用于执行定时任务。Quartz 2.2.2 版本是其在特定时间的一个稳定版本,它提供了丰富的功能来帮助开发者创建、安排和管理任务。在描述中提到的"数据库...

Global site tag (gtag.js) - Google Analytics