❶ 如何安裝和配置 Angularjs Eclipse
如何安裝和配置 AngularJS Eclipse。AngularJS Eclipse 插件是基於強大的 javaScript 推斷引擎(javascript inference engine)Tern.js, 它由 JavaScript 編寫。若在 java 環境下使用該引擎,需要使用 tern.java。它用 node.js 執行 tern.js。這就是為什麼你在下面將看到的必須安裝 node.js 或是 Eclipse 內置的 node.js。
如果不單獨安裝 node.js 或使用 Eclipse 內置的 node.js,那麼在 HTML 編輯器里只有語法顏色(syntax coloring)和自動完成指令(completions directives)可用。
安裝
AngularJS Eclipse 推薦使用 Eclipse JEE 4.5 (Mars)版本,及以上。
當你使用 AngularJS Eclipse 更新站點安裝時,你會看見如下圖所示,當然,你也可以直接在 Eclipse的「market place」里輸入「angularjs」:
❷ 如何編譯JCEF以及內嵌到桌面應用程序中
前言
在項目中需要在桌面應用程序中內嵌瀏覽器, 嘗試了幾種解決方案,有:javafx, DJNativeSwing,CEF等。覺得CEF效果最好。本文目的是介紹如何編譯和使用jCEF。
主要參考和翻譯了這篇文章java-cef
背景說明
什麼是CEF?
CEF是Chromium Embedded Framework的縮寫,是個基於Google Chromium項目的開源Web browser控制項,支持Windows, linux, Max平台。除了提供C/C++介面外,也有其他語言的移植版。比如JCEF。
因為基於Chromium,所以CEF支持Webkit & Chrome中實現的HTML5的特性,並且在性能上面,也比較接近Chrome。
誰在用CEF?
各種瀏覽器
早期的雙核瀏覽器(IE + Webkit),有些使用了CEF來作為Webkit內核瀏覽器控制項。
不過對於瀏覽器來說,直接在Chrome上面擴展,其實才是王道,大家現在都這么做了(各種極速瀏覽器)。
Evernote Client (on Windows)
Evernote允許用戶將網頁粘貼到筆記中,還提供了插件用來將網頁保存為筆記。
那肯定是需要在Client上面可以正確的渲染頁面咯,這個任務就交給了CEF。
GitHub Client (on Windows)
GitHub也打包了libCEF.dll,從表現上面看,用來展示項目的ReadMe頁面的,肯定是CEF,其他地方的UI,可能部分也是用頁面來實現的。
QQ
QQ很早之前就通過內嵌IE來實現一些功能和界面。從2013年開始,QQ引入了CEF,對一些之前用IE的地方進行了替換,這樣就可以使用一些基於Webkit的新特性,同時也獲得了速度、穩定性、兼容性方面的優勢。
什麼是JCEF?
簡單來說,JCEF是對CEF進行了一層Java封裝。使用JNI調用CEF的功能。目標是讓java開發者能夠使用CEF框架來開發web browser控制項。
如編譯和使用JCEF?
目前JCEF保持了一個開發分支對CEF進行跟進,在不斷的develop中。我們可以下載JCEF源碼按照下面的步驟手動編譯。
1. 准備環境
需要編譯JCEF需要你的電腦上有如下的開發環境:
CMake version 2.8.12.2 or newer.
Git.
Java version 1.7 or newer.
Python version 2.6 or newer.
對於linux系統,下面幾個發行版是支持的:
Debian Wheezy, Ubuntu Precise, and related.
對於windows系統:
因為JCEF的開發者用Visual Studio 2013 作為開發工具,所以你得准備一個VS2013 來編譯JCEF,否則用其他的編譯器可能會出問題。
對於MAC系統:
需要Apache Ant
2. 下載JCEF源碼
使用git下載JCEF源碼:
#The JCEF source code will exist at `/path/to/java-cef/src`
cd /path/to/java-cef
git clone https://bitbucket.org/chromiumembedded/java-cef.git src
下載CEF源碼:
訪問cef, 根據目標平台(windows or linux or mac)去下載cef最近穩定的分支下載完成後,按照README.jcef描述的文件結構,將下載的內容解壓,並重命名文件夾。
比如,對於win64的版本,文件夾目錄會是如下的結構/path/to/java-cef/src/third_party/cef/win64/cefclient.gyp
其中third_party文件夾包含的是JCEF引用的第三方庫文件。
對於linux系統,需要創建symlinks。執行如下指令:
$ sudo ln -s /path/to/java-cef/src/third_party/cef/linux64/Resources/icudtl.dat /usr/lib/jvm/java-7-oracle/jre/bin/icudtl.dat
$ sudo ln -s /path/to/java-cef/src/third_party/cef/linux64/Debug/natives_blob.bin /usr/lib/jvm/java-7-oracle/jre/bin/natives_blob.bin
$ sudo ln -s /path/to/java-cef/src/third_party/cef/linux64/Debug/snapshot_blob.bin /usr/lib/jvm/java-7-oracle/jre/bin/snapshot_blob.bin
3. 手動編譯
運行cmake生成目標平台的項目文件,然後編譯這些項目文件去生成本地的代碼,比如生成jcef和jcef_helper兩個項目的本地代碼。
# Enter the JCEF source code directory.
cd /path/to/java-cef/src
# Create and enter the `jcef_build` directory.
# The `jcef_build` directory name is required by other JCEF tooling
# and should not be changed.
mkdir jcef_build && cd jcef_build
# Linux: Generate 64-bit Unix Makefiles.
# Set the JAVA_HOME environment variable if necessary.
export JAVA_HOME=/usr/lib/jvm/java-7-oracle
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ..
# Build using Make.
make -j4
# Mac OS X: Generate 64-bit Xcode project files.
cmake -G "Xcode" -DPROJECT_ARCH="x86_64" ..
# Open jcef.xcodeproj in Xcode and select Proct > Build.
# Windows: Generate 64-bit VS2013 project files.
cmake -G "Visual Studio 12 Win64" ..
# Open jcef.sln in Visual Studio and select Build > Build Solution.
在windows或者linux上,使用compile.[bat|sh]工具來build JCEF的JAVA classes,在MAC上不需要如下步驟,因為java classes已經被cmake生成。
cd /path/to/java-cef/src/tools
compile.bat win64
測試結果是否正確。
使用 run.[bat|sh] 工具來測試JCEF是否工作。
cd /path/to/java-cef/src/tools
run.bat win64 Release detailed
正確結果會得到一個java窗口程序
❸ 啟動Eclipse時發生An internal error occurred ring: "Initializing Java Tooling"錯誤,詳細提示如下:
(根據跟帖朋友的回復, 建議首先嘗試重啟eclipse, 如果仍然報錯, 再嘗試我以下提到的方法)
多種情敏租族況會導致這種報錯。通過【重置窗口布局】,可解決大部分情況:
點擊菜單導航欄的windows > perspective > reset perspective
(網上主流方案是刪除一個配置文件夾,會對原有項目有影響,建議型輪:如果【重置窗口布局】無效,再嘗試那個方案。網上另一種說法JDK的問題,這種概率不大,檢查eclipse全局屬性中的Installed JRE是否引用了不存在的橋弊JDK)
❹ java cxf webservice集成 報錯
不太知虛清楚你怎麼會用到了這個ConnPoolControl這個類。
給此搭你參考下官方要求的森猛拿jar包吧。
The following jars are required for all CXF usage:
- cxf.jar
- commons-logging.jar
- geronimo-activation.jar (Or the Sun equivalent) [6]
- geronimo-annotation.jar (Or the Sun equivalent) [6]
- geronimo-javamail.jar (Or the Sun equivalent) [6]
(MAY be able to remove javamail if you don't use any MTOM/SAAJ type things)
- geronimo-stax-api.jar (Or the Sun equivalent) [6]
- neethi.jar
- jaxb-api.jar [6]
- jaxb-impl.jar (this is a [6] for normal runtime, but is required for
tooling and the dynamic clients)
- XmlSchema.jar
- woodstox-core-asl.jar [6] or another StAX implementation
- stax2-api-3.0.1.jar [6] for woodstox above
- wsdl4j.jar
❺ 【急!】每次剛打開MyEclipse時都會出現問題 導致無法使用【在線等答案】
別閑費事,其實可能給檔森你的答案更費事
你有這時間都重裝完了,建議你還是重新安裝吧行前畝!
最好先重新安裝系統,悔燃再重裝軟體。
有些插件可能會帶來問題。
❻ JDT的好處是什麼
JDT(java development tooling)是Eclipse提供的一組API。其功能引用其官方文檔上的說法:
Programmatically manipulate Java resources, such as creating projects, generating Java source code, performing builds, or detecting problems in code. Programmatically launch a Java program from the platform. Provide a new type of VM launcher to support a new family of Java runtimes. Add new functions and extensions to the Java IDE itself. 總之,提供了一系列強大的API供我們操作Java代碼。
JDT實際上慎哪是將Java代碼構建成一個基於DOM結構的抽象語法樹AST(Abstract Syntax Tree )。代碼中的每個部分都對應一個ASTNode,許多的ASTNode就構成了這個抽象的語法樹。Java Class一般對應Compilation Unit node,該節點也是AST樹上的頂點。創建一個AST如下:
java 代碼
ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource("".toCharArray()); CompilationUnit unit = (CompilationUnit) parser.createAST(null); unit.recordModifications(); AST ast = unit.getAST();
其中createAST,當parse需要較長時間時純孝鎮,可以採用createAST(new NullProgressMonitor()),否則直接傳null即可。
recordModifications()用於記錄節點的變動,比如修改、刪除等,當需要對AST樹進行變動操作時,必須要預先調用這個方法。
比較重要的是:一個AST樹上的所有節點必須都屬於該AST。不允許直接將其他AST樹上的節點添加該AST樹上。否則會拋出java.lang.IllegalArgumentException異常。須使用ASTNode.Subtree(AST target, ASTNode node)返回一個目標樹的深度拷貝,才能進行添加操作。例如: java 代碼ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource("".toCharArray()); CompilationUnit targetRoot= (CompilationUnit) parser.createAST(null); targetRoot.recordModifications(); parser.setSource("class T{}」".toCharArray()); CompilationUnit srcRoot= (CompilationUnit) parser.createAST(null); //這是非法操作,兩做粗者的AST源不一樣 targetRoot.types().add(srcRoot.types().get(0)); //這是合法操作 targetRoot.types().add(ASTNode.Subtree( targetRoot.getAST(), (ASTNode) srcRoot.types().get(0))); //這是合法操作 targetRoot.types().add(targetRoot.getAST().newTypeDeclaration());
可以查網路的
❼ 打開eclipse出現這樣的錯誤
你的ide倒入包的時候梁褲有錯誤.
沒橡裂關系
重新啟動就橡如簡可以解決了
我以前也遇到過這樣的事情
❽ 如何編寫屬於自己的java / scala的調試器
JDWP協議
JDWP(Java Debugger Wire Protocol)是用來在調試和被調試程序之間通過二進制信息來傳遞請求和接收事件的(例如:線程中的狀態或者異常的變化),這些活動通常是網路上進行。這個架構背後的理念是在兩個程序之間盡可能的解耦。旨在減少由編譯器更改目標代碼在運行期的執行所帶來的海森堡效應(Werner是位德國物理學家,不是你喜歡的那個廚師Werner)。
從目標程序中移除多數調試邏輯操作,對檢測被調試的虛擬機中狀態的改變會有所幫助(例如:GC or OutOfMemoryErrors),這些邏輯是不會調試本身的。為了更加簡便,JDK自帶了JDI(java調試介面),該介面提供了全面的調試的協議實現,以及對一個目標虛擬機狀態的完備的操作能力,包括:連接、斷開、指導、處理。
Eclipse的編譯器使用的就是JDWP協議,IDE( Integrated Development Environment )調試JAVA程序時,如果查看當時傳遞給該程序的命令行參數,你會發現Eclipse會傳遞額外的參數(-agentlib:jdwp=transport=dt_socket,…)給程序來啟動java虛擬機調試,同時也將確定發送請求和事件的埠。
JVMTI編程介面
一系列的原生API是現代JVM中的第二個關鍵組件,這些API涵蓋了廣泛關於JVM操作的領域,其中為人所熟知的是 JVM Tooling Interface (i.e. JVMTI)。與JDWP不同的是,JVMTI設計時提供了一系列C/C++ 版的API和一種為JVM動態地載入預編譯的庫文件(如:.ll等)的機制,而這些庫文件會使用由API提供的命令。
JVMTI的使用方式不同於JDWP,實際上,它是在目標程序內執行編譯器。這種方式使調試器同時在性能和穩定性方面改善程序代碼更加得心應手。然而,最關鍵的優勢是這樣一種能夠幾乎是實時直接地和JVM交互的能力。
從JVMTI提搭仔扒供了一系列功能強、易入門的API中可以看出,JVMTI樂於去深入探究並分析自身的工作原理以及同通過用該些API所能完成的功能。可以從JDK自帶的JVMTI中獲取API標頭。
編寫調試器類庫
編寫自己的調試器需要用C++創建本地的操作系統類庫。主方法應該如下:
JNIEXPORT jint JNICALL Agent_OnLoad(JavaVM *vm,char*options,void*)
當JVM載入調試代理器的同時,它會調用該方法。傳遞的Java虛擬機指針是至關重要的,它會提供所有需要跟JVM打交道的砝碼。該指針可以從java虛擬機中引入jvmtiEnv類;可以使用GetEnv方法利用capabilities (特性)和events(事件)的概念與JVMTI層進行交互。
JVMTI 特性
編寫調試器時,最關鍵的一方面是對在目戚做標程序中的調試器代碼的功能有清晰的認識,特別是運行代碼的本地調試器類庫和運行程序聯系緊密時。為了更好的控制你的調試器去影響代碼的執行,因此JVMTI詳解中引入了capabilities(特性)的概念。
當編寫自己的編譯器時,可以事先通知java虛擬機你一系列打算使用的API命令或者事件(例如:設置斷點、中斷線程)。這能夠使JVM可以預先為這些命令或者事件做好准備,同時,你更好的掌控調試器運行期的開銷。這種方式也使得出自不同製造商的JVM能夠以程序設計的方式告訴你那些API的命令可以在整個JVMTI詳解中得以支持。
特性的性能是大不相同的。有些特性使用的性能開銷較低,但是有些較有意思的特性則是相反,例如:知昌在代碼中拋出異常來接收回調的特性—can_generate_exception_events或者是需要加鎖來接收回調的特性—can_generate_monitor_events。原因在於這些特性會在 JIT全范圍的編譯時阻礙JVM優化代碼,與此同時,迫使JVM在運行期降到解釋模式。
其它一些特性,如:每當設定一個目標對象域時,用來接收通知的特性—can_generate_field_modification_events,會產生更大的開銷,導致代碼運行極慢。盡管JVM支持同時載入多個本地類庫,遺憾是一些 HotSpot的特性,如:用來掛起和喚醒線程的特性—can_suspend,只能每次地被一個類庫調用。
當搭建Takipi』s proction debugger時,需攻堅的問題之一是提供類似的特性且不能引起大的開銷(在之後的版本中更是這樣)。
設置回調。一旦接收到一系列的特性後,隨即設置好會被JVM調用的回調,這會讓你知道實際發生過的操作。每個回調都將會完全地提供關於已經發生過的事件的深層次信息。舉個例子,一則異常回調信息會包括拋出異常的位元組碼位置、線程、異常對象、異常是否將被捕獲以及將被捕獲的位置。
voidJNICALL ExceptionCallback(jvmtiEnv *jvmti,JNIEnv *jni, jthread thread, jmethodID method,
jlocation location, jobject exception,jmethodID catch_method, jlocation catch_location)
值得注意的是特性的開銷通常分為兩個部分,第一部分開銷來自驅動它工作,因為它需要使JIT編譯器不同地編譯事務,從而能夠訪問代碼。另外一部分來自當啟用一個回調功能時,此時這會引起JVM在執行期選擇低性能的執行路徑,通過這些路徑,特性可以訪問代碼,期間壓縮和傳遞重要數據會產生額外的開銷
斷點和檢查。編譯器能夠提供熟知的用來檢查在運行期所處的特定狀態的特性,如:SetBreakpoint,通知JVM通過某個具體的位元組碼來中斷執行,或者每當某個區域更改時,通過設置SetFieldModificationWatch中斷執行。針對這點,可以使用其它一些補充性的功能,例如:GetStackTrace 和GetThreadInfo ,用來知曉當前所在代碼中的位置並報告當前位置。
大多數JVMTI 的功能都涉及到一些使用抽象處理的類和方法,較為熟知的是jmethodID 和 jclass(如果你曾經編寫過java本地介面代碼,這是)。其中也提供了額外的一些功能,如:GetMethodName 和 GetClassSignature,來幫助從類常量池中獲取實際的符號名。之後,就可以使用這些符號名以可讀的方式記錄為日誌文件或者以界面的方式展示它們,就如同日常在IDE中所見的一樣。
連接調試器
一旦已經開始編寫調試器類庫,下一步任務就是將它連接到JVM上,下面是幾種連接的方式:
1. 連接JDWP。倘若你編寫的是一個以JDWP為基礎的調試器,需要向被調試對象增加一個啟動參數,就可以在線上進行調試,該參數的形式如下:agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:<port>。這些參數詳細反映了調試器和目標程序之間傳遞信息的方式,以及在掛起模式中是否啟用被調試對象。
2. 連接JVMTI 類庫.通過傳遞給被調試程序的代理路徑命令行,同時指向類庫所在硬碟上的位置,此時,JVM將會載入JVMTI類庫。
另外一種可行的方式是:將命令行參數追加到全局環境變數JAVA_TOOL_OPTIONS 後面,每個新的JVM會接收該變數,並且該變數的值會自動地追加到現存參數列表之後。
3. 遠程連接.還有一種通過使用遠程連接API來連接調試器的方式,使用這個簡單而功能強大的API能夠在沒有使用任何命令行參數來開始程序的情況下連接代理器來運行JVM程序。這個的不足在於你不能獲取通常本可以獲得的特性,如:can_generate_exception_events,因為這些特性只能在虛擬機啟動時獲取。
❾ eclipse 插件開發 右鍵菜單上添加新功能
在eclipse上如何添加菜單步驟:
1、建立工程
新建eclipse插件工程
Submenu Name:這個是指定你要顯示的菜單在右鍵彈出後的名稱,我們起名叫「構建系統」。
Action Label:這個指定了顯示的子菜單的名稱,這里修改為「模板構建」。
Java Package Name:這里指定了點畝灶棚擊模板構建後的處理類的包名,使用默認。
Action Class:這個是處理類的名稱,改為TemplateAddAction。
Action is enabled for:表示選擇的是單選還是多選,這里用默認。
點擊完成。
最後:
Eclipse的資源API
工作空間、項目、文件夾、文件對應的類型介面分別為IWorkspace、IProject、IFolder、IFile。資源相關
的介面都繼承了IResource介面,由於工作空間並不只是資源的管理者,因此IWorkspace並沒有繼承IResource
介面,為了將工作空間作為資源的管理者這一功能體迅則現出來,抽象出了IWorkspaceRoot 的介面(即工作空間
根目錄),通過IWorkspace的getRoot 就可以得到對應的工作空間根目錄。由於工作空間根目錄、項目、文件
夾都是可以容納其他資源的,因此為它們抽取了一個基類介面IContainer。
類的層次結構圖如下:
❿ eclipse啟動後報initializing java tooling怎麼解決
這是由於jdk造成的
解決方法:
1、找到設置面滲殲板【Window】-》【Preferences】-》【Java】-》【Installed JREs】,刪除不存在的JDK;
2、增加已安裝的JDK;
4、將Eclispe強行關閉,通過Windows任務管叢罩沖理器強行關閉。
5、重新啟動Eclipse,悶搜