0

这是我的第一篇文章。我正在尝试使用 jackcess lib 从 linux 机器打开位于 Windows 机器共享文件夹中的远程 .mdb 文件。并在业务对象中设置表值。我写了下面的代码。

场景 1:我已经从 windows 机器运行代码,它工作正常。场景 2:如果我从 linux 机器运行代码,它会得到文件未找到异常。希望这应该是一个小错误。请纠正我这里缺少的内容。

package com.gg.main;   

import java.io.File;   
import java.io.IOException;   
import java.util.ArrayList;   
import java.util.Map;   
import com.healthmarketscience.jackcess.Database;   
import com.healthmarketscience.jackcess.Table;   
import com.penske.model.Login;   


public class Test {   

public static void main(String args[]){       
    Table table = null;   
    Database db = null;   
    Login login = null;   
    ArrayList<Login> rowList = null;   
    try {   
    rowList = new ArrayList();   
    db = Database.open(new File("//aa.bb.com/file/access.mdb"));   

    table = db.getTable("Maintenance");   
    System.out.println(Database.open(new File("//aa.bb.com/file/access.mdb"))   
               .getTable("Maintenance").getColumns());   
    for(Map<String, Object> row : table) {   
        login = new Login();   
        if(row.get("Req_ID")!=null){   
        login.setId(row.get("Req_ID").toString());   
        }   
        if(row.get("Name")!=null){   
        login.setName(row.get("Name").toString());   
        }if(row.get("Loc")!=null){   
        login.setLoc(row.get("Loc").toString());   
        }   
        rowList.add(login);                
    }   

    login.setRowList(rowList);   
    } catch (IOException e1) {   
    e1.printStackTrace();   
    }   
}   

}
4

1 回答 1

0

Linux 没有对 Windows 的 UNC 路径的本机支持,因为您在此处使用它们:

new File("//aa.bb.com/file/access.mdb")

您必须将远程文件系统安装在您的程序可以访问它的 Linux 文件系统中的某个位置,然后使用 smbfs 或类似的东西替换程序中的路径以使用该本地文件系统路径。自从我不得不与 Windows 机器交互以来已经有很长时间了,但它应该是这样的:

mount -t smbfs -o username=foo,password=bar //aa.bb.com/file /mnt/whatever_you_choose_to_name_it

有关详细信息,请参见smbmount 的手册页

当然,如果您的程序应该自动启动,例如。作为系统引导的一部分,您必须确保文件系统也自动挂载。见fstab(5)

于 2013-11-10T06:57:10.887 回答