2017-03-06 95 views
0

所以我的代碼在我的IDE中運行良好,並且我將javax.mail.jar設置爲依賴項,我的代碼運行良好。無法使用.jar依賴運行java應用程序 - '錯誤:無法找到或加載主類'

除非我需要使用Console console = System.console(); 這不起作用內IDE的

所以我試圖編譯我的代碼,並通過終端運行它,我可以編譯但運行我的代碼時,它會返回錯誤:

Error: Could not find or load main class Main

這是我做的編譯:

javac -cp "./javax.mail.jar" Main.java

然後運行它:

java -cp "./javax.mail.jar" Main

,但我得到的錯誤:無法找到或加載主類主要

這是我的全碼:

package com.company; 

import java.io.IOException; 
import java.util.Properties; 
import javax.mail.Message; 
import javax.mail.MessagingException; 
import javax.mail.PasswordAuthentication; 
import javax.mail.Session; 
import javax.mail.Transport; 
import javax.mail.internet.InternetAddress; 
import javax.mail.internet.MimeMessage; 

public class Main { 
public static void main(String[] args) throws IOException { 


    Properties props = new Properties(); 
    props.put("mail.smtp.host", "smtp.gmail.com"); 
    props.put("mail.smtp.socketFactory.port", "465"); 
    props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 
    props.put("mail.smtp.auth", "true"); 
    props.put("mail.smtp.port", "465"); 

    Session session = Session.getDefaultInstance(props, 
      new javax.mail.Authenticator() { 
       protected PasswordAuthentication getPasswordAuthentication() { 
        return new PasswordAuthentication("[email protected]","pass"); 
       } 
      }); 

    try { 

     Message message = new MimeMessage(session); 
     message.setFrom(new InternetAddress("[email protected]")); 
     message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("[email protected]")); 
     message.setSubject("JavaMail"); 
     message.setText("Hi," + "\n\n This is a test"); 

     Transport.send(message); 

     System.out.println("Sent!"); 


    } catch (MessagingException e) { 
     throw new RuntimeException(e); 
    } 
} 


} 

編輯: 還試圖從父目錄中運行(這有在我的COM文件夾和java.mail.jar):

java -cp "./javax.mail.jar;." com.company.Main

但我得到這個:

Error: Could not find or load main class com.company.Main

+0

'java -cp ./javax.mail.jar :. Main「,否則,Main所在的目錄不在類路徑中,因此是錯誤。將類文件存儲在與jar文件相同的目錄中是一個壞主意。使用默認包也是一個壞主意。 –

回答

2

你要在COM的父文件夾編譯它,方法是:

javac -cp "./javax.mail.jar:." com/company/Main.java 

然後通過

java -cp "./javax.mail.jar:." com.company.Main 

希望這有助於運行。

+0

請確保命令中的jar名稱與實際的jar匹配 – Sanjeev

+1

oops請參閱編輯的答案,在mac路徑下用':'替換':' – Sanjeev

+0

我的救世主!謝謝這麼多 – Jack

1
java -cp ".;./javax.mail.jar" com.company.Main 
+0

乾杯:)非常有幫助 – Jack

相關問題