这是我的第一篇文章。我试图使用jackcess lib打开远程.mdb文件,该文件位于Windows机器的共享文件夹中。并在busineess对象中设置表值。我写了下面的代码。
场景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();
}
}
}
答案 0 :(得分: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
有关详细信息,请参阅the manpage for smbmount。
当然,如果您的程序应该自动启动,例如。作为系统启动的一部分,您必须确保文件系统也自动挂载。请参阅fstab(5)
。