try{
             createNewDocument(url + "11.doc");
             String[]  command ={Registry.JNIRegistryTest()+"WINWORD.EXE", path};
      Runtime.getRuntime().exec(command);    }catch(Exception ee){
      ee.printStackTrace();
    }
public void createNewDocument(String filename) {
      MsWordApp = new ActiveXComponent("Word.Application");
      Dispatch documents = Dispatch.get(MsWordApp, "Documents").toDispatch();
      document = Dispatch.call(documents, "Add").toDispatch();
      insertText("2. ");
      saveFileAs(filename);
      closeDocument();
      closeWord();
      ComThread.Release();
  }
为什么在有的机器上面word能打开,有的上面打不开,这是什么原因。程序的一些主要部分我贴在上面了。

解决方案 »

  1.   

    你先看一下路径对不对,Registry.JNIRegistryTest()+"WINWORD.EXE
    打印一下,
      

  2.   

    JDK版本是不是1.6?
    是的话,直接用java.awt.DeskTop这个类好了。
      

  3.   

    package mypakage;
    import org.eclipse.swt.widgets.*;
    import org.eclipse.swt.events.*;
    import org.eclipse.swt.SWT;
    import java.io.*;
    import org.eclipse.swt.ole.win32.*;
    public class Myfrm1 {
    public Myfrm1() {
    super();
    }
    public static void main(String[] args) {
    Display display = new Display();
    Shell shell = new Shell(display);
    OleFrame frame = new OleFrame(shell, SWT.NONE);
    Menu bar = new Menu(shell, SWT.BAR);
    MenuItem save = new MenuItem(bar,SWT.PUSH);
    frame.setFileMenus(new MenuItem[] {save});
    save.setText("保存");
    shell.setMenuBar(bar);
        shell.setText("swt window");
            final File file = new File("D:\\eclipse\\文档\\test.doc");
            final OleClientSite clientSite = new OleClientSite(frame, SWT.NONE, file);     frame.setBounds(0,0,500,300);
        save.addSelectionListener(new SelectionListener(){
            public void widgetDefaultSelected(SelectionEvent e)
            {          if (clientSite.isDirty()) {    
             /*判断文档是否被修改*/
             File tempFile = new File(file.getAbsolutePath() + ".tmp"); /*创建该文件的临时文件*/
             file.renameTo(tempFile);
                     /*将文件另存为临时文件*/
             if (clientSite.save(file, true)){
                // 如果保存成功,则删除临时文件
             tempFile.delete();
             } else {
                // 否则,将临时文件另存为源文件
             tempFile.renameTo(file);
             }
             }         }
            public void widgetSelected(SelectionEvent e) 
            {       
             if (clientSite.isDirty()) {    
             /*判断文档是否被修改*/
             File tempFile = new File(file.getAbsolutePath() + ".tmp"); /*创建该文件的临时文件*/
             file.renameTo(tempFile);
                     /*将文件另存为临时文件*/
             if (clientSite.save(file, true)){
                // 如果保存成功,则删除临时文件
             tempFile.delete();
             } else {
                // 否则,将临时文件另存为源文件
             tempFile.renameTo(file);
             }
             }         }
        
        });
        clientSite.doVerb(OLE.OLEIVERB_PRIMARY );
       
            shell.open( );        while(!shell.isDisposed( )) {               if(!display.readAndDispatch( )) display.sleep( );        }        display.dispose( );
            clientSite.dispose();
            frame.dispose();
    }
    }
      

  4.   

    上述是将OLE对象嵌入SWT应用程序中,例如可以将word、excel等对象嵌入到swt窗口中。
      

  5.   

    run.exec("cmd.exe /c start "+FilePath.getGIMTS_Client_MAINDIR()+"Help_En.CHM");
      

  6.   

    run.exec("cmd.exe /c start "+文件路径);你试下看