① eclipse中的java工程項目如何引用外部jar包和dll動態鏈接庫
1、引用jar包
絕對路徑引用:右鍵工程-->properties-->Java Build Path-->Libraries-->Add external JARs... ,在彈出的對話框中選擇要引入的jar包,OK即可。
相對路徑引用:首先在工程目錄下,新建一個libs文件夾,將要導入的jar包放入其中,然後右鍵工程-->properties-->Java Build Path-->Libraries-->Add JARs... ,在彈出的對話框中選擇libs文件夾下的jar包即可。
2、引用dll動態鏈接庫
絕對路徑引用:右鍵工程-->properties-->java Build Path-->Source,點開工程,選擇Native libraries location....,點擊右側的edit..-->external Folder...,選擇要引入的dll文件所在文件夾即可。
相對路徑引用:首先在工程目錄下,新建一個libs文件夾,將要導入的dll文件包放入其中,右鍵工程-->properties-->java Build Path-->Source,點開工程,選擇Native libraries location....,點擊右側的edit..-->Workspace..,選擇libs文件夾即可。
② JAVA 關於調用資料庫
DbConnect
db
=
DbConnect.
getInstance
();
這是一個連接資料庫的類(你自己寫的),初始化
db相當一個別名,可以點出(.)該類裡面的方法
Connection
conn
=
db.getConnect();
db.getConnect();這個方法
應該是你
寫的一個連接方法了,返回的是Connection
類型,所以用他接收
此時已經連接的資料庫了。接下來你要對資料庫做什麼····
String
sql="select
*from
(select
*from
notice_hanchao
order
by
insert_time
desc)";
一條sql查詢語句
PreparedStatement
ps
=
conn.prepareStatement(sql);
conn.prepareStatement(sql);資料庫對
sql語句
判斷和執行,返回的是PreparedStatement
所以用他接收
ResultSet
rs
=
ps.executeQuery();
執行sql語句後要接收吧,ps.executeQuery();返回一個
結果集
,用ResultSet
去接收
接下來你可以列印了
rs.getString(1);
rs.get類型(1);
rs.getString(2);
rs.get類型(2);········
不懂就去問你們老師吧···我只能這么寫了··希望能幫助你
③ Java程序怎麼指定程序運行時需要引用的jar庫
把jar包就放d盤根目錄下,然後配一下classpath,這樣簡單直接,就不容易出錯了
④ 如何用java調用c++動態庫
Java是通過JNI調用其他語言(包括C++)編譯的本地方法的,而本地方法是以庫文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX機器上是SO文件形式)。
如下是詳細講解:
1、JAVA中所需要做的工作
在JAVA程序中,首先需要在類中聲明所調用的庫名稱,如下:
static {
System.loadLibrary(「goodluck」);
}
在這里,庫的擴展名字可以不用寫出來,究竟是DLL還是SO,由系統自己判斷。
還需要對將要調用的方法做本地聲明,關鍵字為native。並且只需要聲明,而不需要具體實現。如下:
public native static void set(int i);
public native static int get();
然後編譯該JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就會生成C/C++的頭文件。
例如程序TestDll.java,內容為:
public class TestDll
{
static
{
System.loadLibrary("goodluck");
}
public native static int get();
public native static void set(int i);
public static void main(String[] args)
{
TestDll test = new TestDll();
test.set(10);
System.out.println(test.get());
}
}
用javac TestDll.java編譯它,會生成TestDll.class。
再用javah TestDll,則會在當前目錄下生成TestDll.h文件,這個文件需要被C/C++程序調用來生成所需的庫文件。
2、C/C++中所需要做的工作
對於已生成的.h頭文件,C/C++所需要做的,就是把它的各個方法具體的實現。然後編譯連接成庫文件即可。再把庫文件拷貝到JAVA程序的路徑下面,就可以用JAVA調用C/C++所實現的功能了。
接上例子。我們先看一下TestDll.h文件的內容:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class TestDll */
#ifndef _Included_TestDll
#define _Included_TestDll
#ifdef __cplusplus
extern "C" {
#endif
JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass);
JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif
在具體實現的時候,我們只關心兩個函數原型
JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass);
和
JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint);
這里JNIEXPORT和JNICALL都是JNI的關鍵字,表示此函數是要被JNI調用的。而jint是以JNI為中介使JAVA的int類型與本地的int溝通的一種類型,我們可以視而不見,就當做int使用。函數的名稱是JAVA_再加上java程序的package路徑再加函數名組成的。參數中,我們也只需要關心在JAVA程序中存在的參數,至於JNIEnv*和jclass我們一般沒有必要去碰它。
下面我們用TestDll.cpp文件具體實現這兩個函數:
#include "TestDll.h"
int i = 0;
JNIEXPORT jint JNICALL Java_TestDll_get (JNIEnv *, jclass)
{
return i;
}
JNIEXPORT void JNICALL Java_TestDll_set (JNIEnv *, jclass, jint j)
{
i = j;
}
編譯連接成庫文件,本例是在WINDOWS下做的,生成的是DLL文件。並且名稱要與JAVA中需要調用的一致,這里就是goodluck.dll
把goodluck.dll拷貝到TestDll.class的目錄下,java TestDll運行它,就可以觀察到結果了。
⑤ Java如何調用本地dll庫裡面的方法
JAVA通過JNI調用本地方法,而本地方法是以庫文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX機器上是SO文件形式)。通過調用本地的庫文件的內部方法,使JAVA可以實現和本地機器的緊密聯系,調用系統級的各介面方法。
簡單介紹及應用如下:
一、JAVA中所需要做的工作
在JAVA程序中,首先需要在類中聲明所調用的庫名稱,如下:
static {
System.loadLibrary(「goodluck」);
}
在這里,庫的擴展名字可以不用寫出來,究竟是DLL還是SO,由系統自己判斷。
還需要對將要調用的方法做本地聲明,關鍵字為native。並且只需要聲明,而不需要具 體實現。如下:
public native static void set(int i);
public native static int get();
然後編譯該JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就會生成C/C++的頭文件。
例如程序testdll.java,內容為:
public class testdll
{
static
{
System.loadLibrary("goodluck");
}
public native static int get();
public native static void set(int i);
public static void main(String[] args)
{
testdll test = new testdll();
test.set(10);
System.out.println(test.get());
}
}
用javac testdll.java編譯它,會生成testdll.class。
再用javah testdll,則會在當前目錄下生成testdll.h文件,這個文件需要被C/C++程序調用來生成所需的庫文件
⑥ 用JAVA打引用的庫sqljdbc4.jar打開錯誤什麼問題啊!求大神支招
你下個編譯環境吧 Myeclipse 現在都是8.5了
package DB;
import java.sql.*;
import java.util.*;
public class DbPoolManage {
private static int maxConnectNum=5;
private java.sql.Connection conn[]=new Connection[maxConnectNum];
private static ArrayList connectPool=new ArrayList();
private static int flag=0;
private String user="sa";//資料庫用戶名
private String password="123456";//資料庫登錄密碼
private String sSQL="";
private ResultSet rs=null;
private Connection conn1=null;
private Statement stmt=null;
//這里建立所有的連接
private void init()
{
⑦ 如何在java程序中引入neo4j資料庫
package com.neo4j;
import java.io.File;
import java.io.IOException;
import org.neo4j.graphdb.Direction;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Path;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.index.Index;
import org.neo4j.graphdb.traversal.Evaluators;
import org.neo4j.graphdb.traversal.Traverser;
import org.neo4j.graphdb.traversal.TraversalDescription;
import org.neo4j.kernel.Traversal;
import org.neo4j.kernel.impl.util.FileUtils;
import org.neo4j.kernel.impl.util.StringLogger;
import org.neo4j.cypher.ExecutionEngine;
import org.neo4j.cypher.ExecutionResult;
import org.neo4j.graphalgo.PathFinder;
import org.neo4j.graphalgo.GraphAlgoFactory;
public class Example {
// private static final String DB_PATH = "target/neo4jexample";
private static final String DB_PATH = "testgraph.db";
private static final String PRIMARY_KEY = "name";
private GraphDatabaseService graphDB;
private Index<Node> nodeIndex;
private long startNodeId;
private static enum RelTypes implements RelationshipType {
NEO_NODE,
KNOWS,
CODED_BY
}
private void clearDB() {
try {
FileUtils.deleteRecursively(new File(DB_PATH));
}
catch(IOException e) {
throw new RuntimeException(e);
}
}
public void createDB() {
clearDB();
graphDB = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
nodeIndex = graphDB.index().forNodes("nodes");
registerShutdownHook(graphDB);
Transaction tx = graphDB.beginTx();
try {
Node startNode = graphDB.createNode();
startNodeId = startNode.getId();
Node thomas = graphDB.createNode();
thomas.setProperty( "name", "Thomas Anderson" );
thomas.setProperty( "age", 29 );
nodeIndex.add(thomas, PRIMARY_KEY, thomas.getProperty("name"));
startNode.createRelationshipTo( thomas, RelTypes.NEO_NODE );
Node trinity = graphDB.createNode();
trinity.setProperty( "name", "Trinity" );
nodeIndex.add(trinity, PRIMARY_KEY, trinity.getProperty("name"));
Relationship rel = thomas.createRelationshipTo( trinity,
RelTypes.KNOWS );
rel.setProperty( "age", "3 days" );
Node morpheus = graphDB.createNode();
morpheus.setProperty( "name", "Morpheus" );
morpheus.setProperty( "rank", "Captain" );
morpheus.setProperty( "occupation", "Total badass" );
nodeIndex.add(morpheus, PRIMARY_KEY, morpheus.getProperty("name"));
thomas.createRelationshipTo( morpheus, RelTypes.KNOWS );
rel = morpheus.createRelationshipTo( trinity, RelTypes.KNOWS );
rel.setProperty( "age", "12 years" );
Node cypher = graphDB.createNode();
cypher.setProperty( "name", "Cypher" );
cypher.setProperty( "last name", "Reagan" );
nodeIndex.add(cypher, PRIMARY_KEY, cypher.getProperty("name"));
trinity.createRelationshipTo( cypher, RelTypes.KNOWS );
rel = morpheus.createRelationshipTo( cypher, RelTypes.KNOWS );
rel.setProperty( "disclosure", "public" );
Node smith = graphDB.createNode();
smith.setProperty( "name", "Agent Smith" );
smith.setProperty( "version", "1.0b" );
smith.setProperty( "language", "C++" );
nodeIndex.add(smith, PRIMARY_KEY, smith.getProperty("name"));
rel = cypher.createRelationshipTo( smith, RelTypes.KNOWS );
rel.setProperty( "disclosure", "secret" );
rel.setProperty( "age", "6 months" );
Node architect = graphDB.createNode();
architect.setProperty( "name", "The Architect" );
nodeIndex.add(architect, PRIMARY_KEY, architect.getProperty("name"));
smith.createRelationshipTo( architect, RelTypes.CODED_BY );
tx.success();
}
finally {
tx.finish();
}
}
public Traverser getFriends(final Node person) {
TraversalDescription td = Traversal.description()
.breadthFirst()
.relationships(RelTypes.KNOWS, Direction.OUTGOING)
.evaluator(Evaluators.excludeStartPosition());
return td.traverse(person);
}
public void printNodeFriends(Node node) {
// Node neo = graphDB.getNodeById(startNodeId)
// .getSingleRelationship(RelTypes.NEO_NODE, Direction.OUTGOING)
// .getEndNode();
int friendsNumbers = 0;
System.out.println(node.getProperty(PRIMARY_KEY) + "'s friends:");
for(Path friendPath: getFriends(node)) {
System.out.println("At depth " + friendPath.length() + " => "
+ friendPath.endNode().getProperty(PRIMARY_KEY));
friendsNumbers++;
}
System.out.println("Number of friends found: " + friendsNumbers);
}
public void printCypherFriends(String name) {
graphDB = new GraphDatabaseFactory().newEmbeddedDatabase(DB_PATH);
ExecutionEngine engine = new ExecutionEngine(graphDB, StringLogger.logger(DB_PATH));
// ExecutionResult result = engine.execute(
// "start n=node:nodes(name=\"" + name + "\") "
// + "match n-[:KNOWS*..]->f "
// + "return distinct f, f.name");
ExecutionResult result = engine.execute("start n=node(500000) return n;");
System.out.println(result.mpToString());
}
public void printThomasFriends() {
printNodeFriends(nodeIndex.get(PRIMARY_KEY, "Thomas Anderson").getSingle());
}
public Iterable<Path> findShortestPath(Node node1, Node node2) {
PathFinder<Path> finder = GraphAlgoFactory.shortestPath(
Traversal.expanderForTypes(RelTypes.KNOWS, Direction.OUTGOING), 5);
Iterable<Path> paths = finder.findAllPaths(node1, node2);
return paths;
}
public void printShortestPaths() {
Node node1 = nodeIndex.get(PRIMARY_KEY, "Thomas Anderson").getSingle();
Node node2 = nodeIndex.get(PRIMARY_KEY, "Agent Smith").getSingle();
for(Path shortestPath: findShortestPath(node1, node2)) {
System.out.println(shortestPath.toString());
}
}
private static void registerShutdownHook(final GraphDatabaseService graphDB) {
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
graphDB.shutdown();
}
});
}
private void shutdown() {
graphDB.shutdown();
}
/**
* @param args
*/
public static void main(String[] args) {
Example example = new Example();
// example.createDB();
long t1 = System.currentTimeMillis();
// example.printThomasFriends();
example.printCypherFriends("Thomas Anderson");
long t2 = System.currentTimeMillis();
System.out.print(t2-t1);
//example.printShortestPaths();
example.shutdown();
}
}