1你要干的事和有没有源代码没什么关系.
2你把那些class类 假装当成像Quartz一样的第三方包就可以了,虽然Quartz开放源码,但你一定没改它,也就是说那堆class文件和你用的Quartz本质上没啥不同的.都是一回事
3bat里面必须调用才行,其实就是执行main方法你挪到你的代码里面就行了.
4如果你对java基础不够了解,可以把bat贴出来,这样大家才能帮到你
5如果你不知道那些class类对外开放的接口方法,你可以直接反编译它.
6如果你的需求真的是否复杂,原有的class已经不再适合你去调用的话,你可以写个类继承它的类覆盖他的方法,如果的它的方法都是私有的你可以使用反射.
7你要先分析原有程序的业务逻辑.

解决方案 »

  1.   

    你的着眼点好像被无源码固定住了,一再的强调无源码
    你把那些类或 jar 包引入到项目中,其中有哪些类和方法都能列出,你想看个究竟就反编译了关于 Quartz 的使用,我翻译过一个手册:Quartz Job Scheduling Framework[翻译]
    http://www.blogjava.net/Unmi/category/27619.html
      

  2.   

    sunyujia  
       你好,很高兴你能回我,谢谢你的指点,我明白了你的意思了。我是个新手,希望多多指点。按照你的思路我现在可以在quartz中执行bat文件跟普通的java执行bat文件没有区别。接下来我现在遇到一个设计的问题。
    下面的程序代码是一个指定时间间隔执行调用FtpClient类来读取my.properties文件
    流程如下:
    1、Scheduler启动的代码
    public class SimpleExample { 
        public void run() throws Exception {
            SchedulerFactory sf = new StdSchedulerFactory();
            Scheduler sched = sf.getScheduler();
            JobDetail job = new JobDetail("job1", "group1", HelloJob.class);
            Trigger trigger = TriggerUtils.makeSecondlyTrigger(5);
            trigger.setName("hehe");
            sched.scheduleJob(job, trigger);
            sched.start();
        }
        public static void main(String[] args) {
            SimpleExample example = new SimpleExample();
            try {
    example.run();
    } catch (Exception e) {
    e.printStackTrace();
    }
        }
    }2、HelloJob类
    public class HelloJob implements Job {
    public HelloJob() {
    }
    public void execute(JobExecutionContext context)
    throws JobExecutionException {
    try {
    FtpClient.ReadProperties("my.properties"});
    } catch (Exception e) {
    e.printStackTrace();
    }
    }}
    3、FtpClient类
    public class FtpClient {
    private static final int NO_OF_PROPERTIES_ITEMS = 4;
    public static void ReadProperties(String fileName) throws Exception {
    InputStream in;
    String strDummy = "";
    StringTokenizer st; in = new FileInputStream(fileName);
    BufferedReader r = new BufferedReader(new InputStreamReader(in, System
    .getProperty("file.encoding")));
    java.util.Properties prop = new java.util.Properties();
    for (int i = 0; i < NO_OF_PROPERTIES_ITEMS; i++) {
    strDummy = r.readLine();
    st = new StringTokenizer(strDummy, "="); if (strDummy.indexOf("=") == strDummy.length() - 1) {
    prop.setProperty(st.nextToken(), "");
    } else {
    prop.setProperty(st.nextToken(), st.nextToken());
    }
    }
    in.close();
    System.out.println(prop.getProperty("FTP_HOSTNAME"));
    System.out.println(prop.getProperty("FTP_USERNAME"));
    System.out.println(prop.getProperty("FTP_PASSWORD"));
    }
    }
    4、my.properties文件里面内容
                FTP_HOSTNAME=192.168.12.44
          FTP_USERNAME=nick
          FTP_PASSWORD=nick
    上面的程序是指定时间间隔5秒读取配置文件并打印配置文件的信息我的问题是:
    1、如果 对不同的properties文件都分配一个trigger(可能别的properties文件我想每隔10秒或是其他时间来读)
          也就是说trigger跟peoperties文件是程序中的变动元素,而处理逻辑FtpClient类和HelloJob类是通用的。
         (  假如我有100个甚至更多properties,而我都跟上面重新增加逻辑一样的FtpClient类和HelloJob类,那样重用
              思想 就体现不了了 )对以上面问题1有什么办法,或者思路可行呢?
    我对quzrtz的理解是一个任务调度schedule是trigger和一个实现Job接口的类关联执行,我们要处理的逻辑都放到实现了那个Job接口的类中执行
    根据上面的思路,我不知道是否Quartz还有跟这个有关的高级的应用
    不知道我上面说的能够看的明白不?小弟的表达不够好,请谅解,呵呵。希望能指点一下思路,谢谢
      

  3.   

    kypfos 
        你好,很感谢你给我提供资料学习,我对Quartz学习大概知道怎么回事了,对于上面这个思路不知道怎么能实现到,也希望指点指点,谢谢。
      

  4.   

    说实话我没太理解你的需求,你不用太客气啦呵呵你根据你的信息猜想提供你一些信息吧,不一定是你需要的,但或许会帮助到你1。一个任务调度实际上是一个线程,trigger只是触发器而已,你应该更多的关注你的JobDetail 我记得一个trigger可以触发很多job
    2。有可能你的需求可以用一个job就可以了,一个job也可以读n个文件啊
    3。你可以扩大文件的使用,使用目录读取目录下面的文件
    4。你可以通过设计抽象类或接口或动态类加载来完善重用
    5。你可以定义配置文件标准,来保证n个配置文件的标准,
    6。Quartz本身是任务调度,它不能帮助你改善你的业务需求
    7。多线程编程很容易引发各种问题,建议你先搞明白多线程的一些基础知识,至少明白同步。
    8。你的下一步应该深入理解Quartz其实他的类名方法名称已经很有助于理解了,感觉你理解的有略微的偏差