2011-04-06 49 views
0

我正在使用java的ssh工具,並在導入包後不斷收到錯誤。這段代碼來自包中的一個例子。我已經將庫添加到了我的項目庫(netbeans)中,但是我在JSch的第一個聲明中找不到符號,我在包擴展中看到該符號,但是仍然出現錯誤。有任何想法嗎??使用Ssh工具導入包後無法找到符號

/* -*-mode:java; c-basic-offset:2; indent-tabs-mode:nil -*- */ 
import bin.src.com.jcraft.jsch.*; 
import java.awt.*; 
import javax.swing.*; 
import java.io.*; 

public class Exec{ 
    public static void main(String[] arg){ 
    try{ 
     JSch jsch=new JSch(); 

     String host=null; 
     if(arg.length>0){ 
     host=arg[0]; 
     } 
     else{ 
     host=JOptionPane.showInputDialog("Enter [email protected]", 
             System.getProperty("user.name")+ 
             "@localhost"); 
     } 
     String user=host.substring(0, host.indexOf('@')); 
     host=host.substring(host.indexOf('@')+1); 

     Session session=jsch.getSession(user, host, 22); 

     /* 
     String xhost="127.0.0.1"; 
     int xport=0; 
     String display=JOptionPane.showInputDialog("Enter display name", 
               xhost+":"+xport); 
     xhost=display.substring(0, display.indexOf(':')); 
     xport=Integer.parseInt(display.substring(display.indexOf(':')+1)); 
     session.setX11Host(xhost); 
     session.setX11Port(xport+6000); 
     */ 

     // username and password will be given via UserInfo interface. 
     UserInfo ui=new MyUserInfo(); 
     session.setUserInfo(ui); 
     session.connect(); 

     String command=JOptionPane.showInputDialog("Enter command", 
               "set|grep SSH"); 

     Channel channel=session.openChannel("exec"); 
     ((ChannelExec)channel).setCommand(command); 

     // X Forwarding 
     // channel.setXForwarding(true); 

     //channel.setInputStream(System.in); 
     channel.setInputStream(null); 

     //channel.setOutputStream(System.out); 

     //FileOutputStream fos=new FileOutputStream("/tmp/stderr"); 
     //((ChannelExec)channel).setErrStream(fos); 
     ((ChannelExec)channel).setErrStream(System.err); 

     InputStream in=channel.getInputStream(); 

     channel.connect(); 

     byte[] tmp=new byte[1024]; 
     while(true){ 
     while(in.available()>0){ 
      int i=in.read(tmp, 0, 1024); 
      if(i<0)break; 
      System.out.print(new String(tmp, 0, i)); 
     } 
     if(channel.isClosed()){ 
      System.out.println("exit-status: "+channel.getExitStatus()); 
      break; 
     } 
     try{Thread.sleep(1000);}catch(Exception ee){} 
     } 
     channel.disconnect(); 
     session.disconnect(); 
    } 
    catch(Exception e){ 
     System.out.println(e); 
    } 
    } 

    public static class MyUserInfo implements UserInfo, UIKeyboardInteractive{ 
    public String getPassword(){ return passwd; } 
    public boolean promptYesNo(String str){ 
     Object[] options={ "yes", "no" }; 
     int foo=JOptionPane.showOptionDialog(null, 
      str, 
      "Warning", 
      JOptionPane.DEFAULT_OPTION, 
      JOptionPane.WARNING_MESSAGE, 
      null, options, options[0]); 
     return foo==0; 
    } 

    String passwd; 
    JTextField passwordField=(JTextField)new JPasswordField(20); 

    public String getPassphrase(){ return null; } 
    public boolean promptPassphrase(String message){ return true; } 
    public boolean promptPassword(String message){ 
     Object[] ob={passwordField}; 
     int result= 
     JOptionPane.showConfirmDialog(null, ob, message, 
             JOptionPane.OK_CANCEL_OPTION); 
     if(result==JOptionPane.OK_OPTION){ 
     passwd=passwordField.getText(); 
     return true; 
     } 
     else{ 
     return false; 
     } 
    } 
    public void showMessage(String message){ 
     JOptionPane.showMessageDialog(null, message); 
    } 
    final GridBagConstraints gbc = 
     new GridBagConstraints(0,0,1,1,1,1, 
          GridBagConstraints.NORTHWEST, 
          GridBagConstraints.NONE, 
          new Insets(0,0,0,0),0,0); 
    private Container panel; 
    public String[] promptKeyboardInteractive(String destination, 
               String name, 
               String instruction, 
               String[] prompt, 
               boolean[] echo){ 
     panel = new JPanel(); 
     panel.setLayout(new GridBagLayout()); 

     gbc.weightx = 1.0; 
     gbc.gridwidth = GridBagConstraints.REMAINDER; 
     gbc.gridx = 0; 
     panel.add(new JLabel(instruction), gbc); 
     gbc.gridy++; 

     gbc.gridwidth = GridBagConstraints.RELATIVE; 

     JTextField[] texts=new JTextField[prompt.length]; 
     for(int i=0; i<prompt.length; i++){ 
     gbc.fill = GridBagConstraints.NONE; 
     gbc.gridx = 0; 
     gbc.weightx = 1; 
     panel.add(new JLabel(prompt[i]),gbc); 

     gbc.gridx = 1; 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     gbc.weighty = 1; 
     if(echo[i]){ 
      texts[i]=new JTextField(20); 
     } 
     else{ 
      texts[i]=new JPasswordField(20); 
     } 
     panel.add(texts[i], gbc); 
     gbc.gridy++; 
     } 

     if(JOptionPane.showConfirmDialog(null, panel, 
             destination+": "+name, 
             JOptionPane.OK_CANCEL_OPTION, 
             JOptionPane.QUESTION_MESSAGE) 
     ==JOptionPane.OK_OPTION){ 
     String[] response=new String[prompt.length]; 
     for(int i=0; i<prompt.length; i++){ 
      response[i]=texts[i].getText(); 
     } 
    return response; 
     } 
     else{ 
     return null; // cancel 
     } 
    } 
    } 
} 
+0

你能發佈錯誤嗎? – travega 2011-04-06 02:24:49

+0

您是如何將軟件包添加到項目中的?即在項目首選項中拖放或添加Java構建路徑等? – travega 2011-04-06 02:27:19

回答

1

應該import com.jcraft.jsch.*import bin.src.com.jcraft.jsch.*;基於我看到here的代碼。

+0

我把它放在不同的位置,所以我需要前面的垃圾箱。 – user541597 2011-04-06 02:27:26

+0

所以你重新包裝了jar文件?我不確定你在不同的位置是什麼意思。您是否將該源文件手動複製到不同包名下的項目源文件夾而不是使用jar文件? – CoolBeans 2011-04-06 02:30:16

+0

下載並沒有附帶一個jar文件,它只是一堆我已經編譯爲.java文件的類文件,並且創建了一個包含這些文件夾的.jar文件,所以基本上創建了.java文件並創建了com的jar文件然後我去了我的項目,並添加了一個庫。當我導入該庫時,我得到一個導入未使用的錯誤,並找不到該符號。 – user541597 2011-04-06 02:38:49

相關問題