2016-04-03 10 views
2

Yerel olarak bir java dinamik web uygulaması oluşturmayı bitirdim ve şimdi Dijital Okyanusta bir damlacık üzerine yerleştirmeye çalışıyorum.Java .war uygulamasını dijital okyanusa aktarma Ubuntu

Sunucumda jdk, mysql ve tomcat'i yükledim ve uygulamamı eclipse'den aktarılan .war dosyasını kullanarak dağıttım. Ayrıca bir mysql-connector-java dosyasını/opt/tomcat/lib klasörüne kopyaladım.

Error instantiating servlet class surveyExchange.my.SignUpServlet 
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/UserInfo?useSSL=false. 

Ve kod şöyle görünür: bu hat üzerinde bir hata

static String url = "jdbc:mysql://localhost:3306/"; 
static String dbName = "UserInfo?useSSL=false"; 
static String driver = "com.mysql.jdbc.Driver"; 
static String userName = "root"; 
static String password = "******"; 
static Connection conn = null; 

private static final long serialVersionUID = 1L; 

/** 
* @throws SQLException 
* @see HttpServlet#HttpServlet() 
*/ 
public SignUpServlet() throws SQLException { 
    super(); 
    conn = DriverManager.getConnection(url + dbName, userName, password); 
} 

vardı:

sunucuda benim uygulamasını açtığınızda

Ama bir hata böyle göründü

conn = DriverManager.getConnection(url + dbName, userName, password); 

Yığın İzleme:

Exception 
javax.servlet.ServletException: Error instantiating servlet class surveyExchange.my.SignUpServlet 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 

Root Cause: 
java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/UserInfo?useSSL=false 
    java.sql.DriverManager.getConnection(DriverManager.java:596) 
    java.sql.DriverManager.getConnection(DriverManager.java:215) 
    surveyExchange.my.SignUpServlet.<init>(SignUpServlet.java:34) 
    sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    java.lang.Class.newInstance(Class.java:383) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) 
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) 
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1502) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1458) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:745) 

Sabrınız için çok teşekkür ederim!

+0

Şuna benzer: Servlet sınıfı anketi başlatılırken hata oluştuExchange.my.SignUpServlet java.sql.SQLException: Jdbc için uygun bir sürücü bulunamadı: mysql: // localhost: 3306/UserInfo? UseSSL = false. – desperado

+0

Bir tane daha değişken sürücü al = URL + dbName; ve bu argümana geçmek .getConnection (sürücü, kullanıcı adı, şifre) –

+1

Yığın Taşması'na Hoşgeldiniz! Sorunun cevabının ne olduğundan emin değilim, ancak gerekli tüm bilgilerin dahil edildiğinden ve iyi biçimlendirildiğinden emin olmak için oldukça iyi bir iş çıkardınız. Eminim yakında birileri cevaplayacaktır. Konaklamanızın tadını çıkarın! –

cevap

0

dolaylı sorunuzu cevaplama yolu:

sürücü tomcat en lib/ klasöründe (değil de WEB-INF ince olmalıdır Go with a datasource (ama orada aynı sorunları çalıştırmak, böylece devam edebilir), ancak her ne yap, lütfen sadece bir yere sahip ol.

Dosyadaki izinleri (ve tomcat'i çalıştırmak için kullanmakta olduğunuz kullanıcıyla ilgili tüm dizinleri) kontrol edin ve bağlayıcınızın aslında bir jar dosyası olduğundan ve yalnızca jar içeren bir sıkıştırılmış indirilen dosya olmadığından emin olun. . Class.forName("com.mysql.jdbc.Driver"); yürütün: Genellikle ne yapıyoruz

sen (uygulama çalıştırma yeterlidir kez başına) bir bağlantı denemeden önce emin Sonra ln -s /usr/share/java/mysql-connector-java.jar /opt/tomcat/lib/

, denemek için başka seçeneği yerel mysql eşleşen sürümüne sahip olmak için aptitude install libmysql-java etmektir.

Ayrıca, ben servlet'in init() yönteme Taşınacak bağlantı tahsisi için iyi olduğunu iddia ediyorum (ve destroy() yılında temizlemek) bir Jndi bağlantısı kullanmak bile ya - ama bu sadece yukarıda cevap ilaveten bu.

+0

Evet, class.forName ("com.mysql.jdbc. Sürücü ") ve çalıştı. Teşekkür ederim! – desperado

+0

@desperado Aslında DriverManager.registerDriver (yeni com.mysql.jdbc.Driver()); 'kullanmak daha iyidir. – Majora320