??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产导航,蜜臀久久99精品久久久无需会员,亚洲a级在线观看http://www.aygfsteel.com/zjibo/zh-cnSat, 05 Jul 2025 23:25:02 GMTSat, 05 Jul 2025 23:25:02 GMT60RMIMW记(1)http://www.aygfsteel.com/zjibo/archive/2009/05/19/271593.htmlq来的兵q来的兵Tue, 19 May 2009 13:37:00 GMThttp://www.aygfsteel.com/zjibo/archive/2009/05/19/271593.htmlhttp://www.aygfsteel.com/zjibo/comments/271593.htmlhttp://www.aygfsteel.com/zjibo/archive/2009/05/19/271593.html#Feedback0http://www.aygfsteel.com/zjibo/comments/commentRss/271593.htmlhttp://www.aygfsteel.com/zjibo/services/trackbacks/271593.html1.       书目

_NRMI——Java与EJB企业U应用开?/span>

Java™ RemoteMethodInvocation Specification

Java tutorial- RMI

2.       基础知识

2.1 |络通信协议

|络通信层是分布式计环境中使用客户/服务器结构的一个核心技术,而网l编E中大体有两U通信模式Q无q接和面向连接的协议?/span>

             UDP

UDP (universal datagram protocol)是一U用于无q接通信的标准化协议Q其建立在IP协议之上Q而IP协议是internet使用的基本数据传输协议。UDP协议的主要作用是网l数据流量压~成数据报文的Ş式。一个典型的数据报文是一个二q制数据的传输单位。每一个数据报的前8个字节用来包含报头信息,剩余字节则用来包含具体的传输数据。UDP协议q不提供数据传送的保证机制。如果在从发送方到接收方的传递过E中出现数据报的丢失Q协议本wƈ不能做出M或提示。因此,通常Z把UDP协议UCؓ不可靠的传输协议。一般用来传输少量数据,它资源消耗小Q处理速度快?/span>

 TCP

TCPQtransport control protocolQ传输控制协议,标准化的面向q接的通信协议。在使用TCP协议中发送者和接收者必d通信之前建立q接Q连接徏立之后被看成是一个数据流Q发送者将数据发到该数据流上,接收者从该数据流上读取数据。如果接收者也同时是发送者则q接是双向的。通信完成后Q何一斚w可以关闭q接Q之后的d操作都会p|。TCP协议提供了可靠的面向对象的数据流传输服务的规则和U定。简单的说在TCP模式中,Ҏ发一个数据包l你Q你要发一个确认数据包l对斏VJava提供的类库都TCP/IP协议的用借助套接字(SocketQ进行了抽象。套接字包含了徏立与q程L的连接,与主行通信以及关闭q接所需要的所有操作,而这些操作实际上q是由TCP/IP来执行的?/span>

~组

在应用复杂尤其是面向对象的时候,一斚w会遇到处理数据或者对象的l构的问题。另一斚wq会遇到面向的用来发送字节或字符块的|络q接问题。此旉要将对象转换成连接可以处理的格式Q从而自定义的对象可以通过q接道?/span>

~组QmarshallingQ是一个将负责对象转换成字节流的过E,然后在用反q程----反编l将字节{换成对象。Java中编l的实现方式是序列化QserializationQ?br />


    代理

代理是一个实现给定接口的对象Q但是不直接执行一些代码计结果,而是代表其他一些对象执行实际计的对象?br />


    
    代理可以代表其他的库或者某U类似的可以代替它执行网l通信的东ѝ这是RMI工作的原理,代理在RMI也即存根QStubQ?/span>

引用位于服务器中的对象的代理是如何构造的Q客L不能有一个真的Java引用Q因为Java引用只在对象位于同一个JVM时才能正常工作。构造的基本思想是ؓ服务器对象分配一个唯一的标识序P该序L代理保存Q此外还有对象所在的L名?/span>



    客户如何h代理

在获取代理时我们需要一个间接层把所有细节抽象,通过使用名字去获得对应对象的思想是命名。命名的一个主要作用是通过使用对象的名字,化获得对象的d?/span>

对于RMI来说Q最通用的命名实现时RMI注册Q它hbind和lookup操作Q对于命名服务来_客户端其实存在一个它的代理?/span>

命名使用CZ?br />



q来的兵 2009-05-19 21:37 发表评论
]]>
String要点http://www.aygfsteel.com/zjibo/archive/2008/12/06/244794.htmlq来的兵q来的兵Sat, 06 Dec 2008 11:39:00 GMThttp://www.aygfsteel.com/zjibo/archive/2008/12/06/244794.htmlhttp://www.aygfsteel.com/zjibo/comments/244794.htmlhttp://www.aygfsteel.com/zjibo/archive/2008/12/06/244794.html#Feedback0http://www.aygfsteel.com/zjibo/comments/commentRss/244794.htmlhttp://www.aygfsteel.com/zjibo/services/trackbacks/244794.html
一.String对象的比较,+操作和internҎ
q里从一个问题入手来看看?br />

package testPackage;
   public class Test {
        
public static void main(String[] args) {
            String hello 
= "Hello", lo = "lo";
            System.out.print((hello 
== "Hello"+ " ");
            System.out.print((Other.hello 
== hello) + " ");
            System.out.print((other.Other.hello 
== hello) + " ");
            System.out.print((hello 
== ("Hel" + "lo")) + " ");
            System.out.print((hello 
== ("Hel" + lo)) + " ");
            System.out.println(hello 
== ("Hel" + lo).intern());
        }

    }
    class Other {
        
static String hello = "Hello";
    }


package other;
    public class Other {
        
static String hello = "Hello";
    }

正确{案Qtrue true true true false true
主要要点有:
1.所有内容相同的String指向同一个内存块。但String对象不能是通过new操作创徏出来。主要原因是JVM对String做了优化QString加蝲之后会持有一个常量池Q?br /> 只要在常量池中找到内容相同的String׃把其引用q回。而new操作是直接在内存中分配新I间?br />


2.Java中有两种l定Q静态和动态。如?操作的两Ҏ帔R表达式那么会在采用静态绑定,也就是说~译之后值已l定下来了。而如果有一Ҏ通过new操作创徏?br /> 来的那么会采用动态绑定,只有在运行的时候才知道其具体的倹{?br /> 3.String的internҎ会到帔R池里面找是否有相同内容的StringQ如果有则返回其引用。如果没有则把这个String对象d到常量池之中q放回其引用。额外说
下,intern在英文中有保留区的意思,q样好理解其作用。internҎq是native的?/pre>
?String中的正则表达式?/pre>

String中有些方法是需要正则表辑ּ作ؓ参数的。这个时候就要主要不要传错参数。最典型的例子就是replaceAll(String regex, String replacement)。第一?br /> 参数是需要正则表辑ּ的,而第二参数是普通的字符丌Ӏ?/pre>
        String ss = "???";
        ss 
= ss.replaceAll("?""=");//q行到这里会抛出PatternSyntaxExceptionQ因?#8220;?”在正则表辑ּ里面是特D符P需要{义?/span>
        ss = ss.replaceAll("[?]""=");//正确Q我个h比较們֐于这U写法?/span>
        ss = ss.replaceAll("\\?""=");//正确Q对“?”做{义?/span>

因此在用splitQreplaceAllQreplaceFirst{方法时要特别注意是不是需要{?


q来的兵 2008-12-06 19:39 发表评论
]]>Java Puzzlehttp://www.aygfsteel.com/zjibo/archive/2008/04/21/194592.htmlq来的兵q来的兵Mon, 21 Apr 2008 11:24:00 GMThttp://www.aygfsteel.com/zjibo/archive/2008/04/21/194592.htmlhttp://www.aygfsteel.com/zjibo/comments/194592.htmlhttp://www.aygfsteel.com/zjibo/archive/2008/04/21/194592.html#Feedback0http://www.aygfsteel.com/zjibo/comments/commentRss/194592.htmlhttp://www.aygfsteel.com/zjibo/services/trackbacks/194592.html1.优先使用primitive type
2.不要使用Boolean作ؓq回倹{?/div>
3.在初始化所有变量之后再创徏cȝ实例?/div>
4. 用URI代替URLQ用URI的createҎ代替new?/div>
5. 注意使用inputsream的skipҎQ此Ҏ会返回实际蟩q的长度Q最好自q听返回倹{?/div>
6. Q:q算W会q回最大范围的cdQ如QtrueQnew Intege(2): new Float(1.0);会q回2.0.
7. 量使用doubleQ而不是float?/div>

q来的兵 2008-04-21 19:24 发表评论
]]>EclEmma源代码研I积?/title><link>http://www.aygfsteel.com/zjibo/archive/2008/04/10/191925.html</link><dc:creator>q来的兵</dc:creator><author>q来的兵</author><pubDate>Thu, 10 Apr 2008 09:12:00 GMT</pubDate><guid>http://www.aygfsteel.com/zjibo/archive/2008/04/10/191925.html</guid><wfw:comment>http://www.aygfsteel.com/zjibo/comments/191925.html</wfw:comment><comments>http://www.aygfsteel.com/zjibo/archive/2008/04/10/191925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/zjibo/comments/commentRss/191925.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/zjibo/services/trackbacks/191925.html</trackback:ping><description><![CDATA[1. <span style="font-family: 宋体">?/span>interface<span style="font-family: 宋体">来定义系l对外提供的服务Q有抽象cL做扩展。尽量用</span>interface<span style="font-family: 宋体">作ؓ参数cd?/span> <p>2. ThreadLocal<span style="font-family: 宋体">c,定义了一个变量的本地副本Q与原有变量隔离Q作用类?/span>static<span style="font-family: 宋体">变量Q只是不׃n。可?/span>set<span style="font-family: 宋体">d变量Q?/span>get<span style="font-family: 宋体">去获取变量。变量类型不限制?/span></p> <p>3. Eclipse plug in<span style="font-family: 宋体">开发中可以实现</span>IRuntimeClasspathProvider<span style="font-family: 宋体">接口?/span><span style="font-family: 宋体">可以提供?/span>launch configuration<span style="font-family: 宋体">去获?/span>unresolved<span style="font-family: 宋体">?/span>resolved classpath<span style="font-family: 宋体">。开发h员可以在</span>resolveClasspath<span style="font-family: 宋体">Ҏ中加入自定义?/span>classpath<span style="font-family: 宋体">。实现类需要注册在</span>extension point<span style="font-family: 宋体">中?/span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">      </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">/**</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">Computes</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">and</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">returns</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">an</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">unresolved</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">classpath</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">for</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">the</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">given</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">launch</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">configuration.</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">Variable</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">and</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">container</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">entries</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">are</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">not</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">resolved.</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><strong><span style="font-size: 10pt; color: #7f9fbf; font-family: 'Courier New'">@param</span></strong><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">configuration</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">launch</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">configuration</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><strong><span style="font-size: 10pt; color: #7f9fbf; font-family: 'Courier New'">@return</span></strong><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">unresolved</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">path</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><strong><span style="font-size: 10pt; color: #7f9fbf; font-family: 'Courier New'">@exception</span></strong><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">CoreException</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">if</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">unable</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">to</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">compute</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">a</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">path</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*/</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">      </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> IRuntimeClasspathEntry[] computeUnresolvedClasspath(ILaunchConfiguration configuration) </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">throws</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> CoreException;</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">      </span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">      </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">/**</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">Returns</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">the</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">resolved</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">path</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">corresponding</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">to</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">the</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">given</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">path,</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">in</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">the</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">context</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">of</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">the</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">given</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">launch</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">configuration.</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">Variable</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">and</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">container</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">entries</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">are</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">resolved.</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">The</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">returned</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">(resolved)</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">path</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">need</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">not</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">have</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">the</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">same</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">number</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">of</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">entries</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">as</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">the</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">given</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">(unresolved)</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">path.</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><strong><span style="font-size: 10pt; color: #7f9fbf; font-family: 'Courier New'">@param</span></strong><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">entries</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">entries</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">to</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">resolve</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><strong><span style="font-size: 10pt; color: #7f9fbf; font-family: 'Courier New'">@param</span></strong><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">configuration</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">launch</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">configuration</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">context</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">to</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">resolve</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">in</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><strong><span style="font-size: 10pt; color: #7f9fbf; font-family: 'Courier New'">@return</span></strong><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">resolved</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">path</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*</span><strong><span style="font-size: 10pt; color: #7f9fbf; font-family: 'Courier New'">@exception</span></strong><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">CoreException</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">if</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">unable</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">to</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">resolve</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">a</span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">path</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">       </span><span style="font-size: 10pt; color: #3f5fbf; font-family: 'Courier New'">*/</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">      </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">public</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> IRuntimeClasspathEntry[] resolveClasspath(IRuntimeClasspathEntry[] entries, ILaunchConfiguration configuration) </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">throws</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> CoreException;</span></p> <p style="background: white"><span style="font-size: 10pt; color: black; font-family: 'Trebuchet MS'">A provider extension is defined in </span><code><span style="font-size: 10pt; color: black">plugin.xml</span></code><span style="font-size: 10pt; color: black; font-family: 'Trebuchet MS'">. Following is an example definition of a runtime classpath provider extension. </span></p> <pre style="background: white"><span style="color: black"> <extension point="org.eclipse.jdt.launching.classpathProviders"></span></pre> <pre style="background: white"><span style="color: black">   <classpathProvider </span></pre> <pre style="background: white"><span style="color: black">      id="com.example.ExampleClasspathProvider"</span></pre> <pre style="background: white"><span style="color: black">      class="com.example.ExampleClasspathProviderImpl"</span></pre> <pre style="background: white"><span style="color: black">   </classpathProvider></span></pre> <pre style="background: white"><span style="color: black"> </extension></span></pre> <p>4. plug in <span style="font-family: 宋体">开发中可以?/span>JavaRuntime <span style="font-family: 宋体">d到运行环境的信息?/span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">         <br /> IRuntimeClasspathProvider provider = JavaRuntime</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.<em><span style="background: silver">getClasspathProvider</span></em>(configuration);</span></p> <p><span style="font-size: 10pt; color: black; font-family: 宋体">其中</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">configuration</span><span style="font-size: 10pt; color: black; font-family: 宋体">?/span><span style="font-size: 10pt; background: silver; color: black; font-family: 'Courier New'">ILaunchConfiguration</span><span style="font-size: 10pt; color: black; font-family: 宋体">cd的?/span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">4. </span><span style="font-size: 10pt; color: black; font-family: 宋体">?/span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">Eclipse plug in</span><span style="font-size: 10pt; color: black; font-family: 宋体">开发中获取文g。两U解军_法:</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">1.</span><span style="font-size: 10pt; color: black; font-family: 宋体">?/span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">plug in</span><span style="font-size: 10pt; color: black; font-family: 宋体">实例中读取文件的</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">URL</span><span style="font-size: 10pt; color: black; font-family: 宋体">Q然后用</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">FileLocator</span><span style="font-size: 10pt; color: black; font-family: 宋体">把这?/span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">URL</span><span style="font-size: 10pt; color: black; font-family: 宋体">转化成文件\径;</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">2.</span><span style="font-size: 10pt; color: black; font-family: 宋体">直接利用</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">FileLocator</span><span style="font-size: 10pt; color: black; font-family: 宋体">?/span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">find</span><span style="font-size: 10pt; color: black; font-family: 宋体">Ҏ?/span></p> <p><span style="font-size: 10pt; color: black; font-family: 宋体">Ҏ</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">1</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">//filepath </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 宋体">是需要定位的文g</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            String filepath = </span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"/bin/resources/test.jar"</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">//instance </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 宋体">是当?/span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">plug in</span><span style="font-size: 10pt; color: #3f7f5f; font-family: 宋体">的实?/span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            URL url = </span><em><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">instance</span></em><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.getBundle().getEntry(filepath);</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            String path = </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">null</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">try</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> {</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">                  path = FileLocator.<em>resolve</em>(url).getPath();</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            } </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">catch</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> (IOException e) {</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">                  </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">// </span><strong><span style="font-size: 10pt; color: #7f9fbf; font-family: 'Courier New'">TODO</span></strong><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'"> Auto-generated catch block</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">                  e.printStackTrace();</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            }</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            </span><strong><span style="font-size: 10pt; background: silver; color: #7f0055; font-family: 'Courier New'">return</span></strong><strong><span style="font-size: 10pt; background: silver; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; background: silver; color: black; font-family: 'Courier New'"> Path(path);</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">      }</span></p> <p><span style="font-size: 10pt; color: black; font-family: 宋体">Ҏ</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">2</span></p> <p style="margin-left: 4.5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="font-size: 9pt; color: #4444cc; font-family: 'Courier New'">            </span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">String filepath = </span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"/bin/resources/test.jar"</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">;</span></p> <p style="margin-left: 4.5pt; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt"><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            URL url = FileLocator.find(</span><em><span style="font-size: 10pt; color: #0000c0; font-family: 'Courier New'">instance</span></em><span style="font-size: 10pt; color: black; font-family: 'Courier New'">.getBundle(),new Path(filepath),null);</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">try</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> {</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">                  path = FileLocator.<em>resolve</em>(url).getPath();</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            } </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">catch</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> (IOException e) {</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">                  </span><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'">// </span><strong><span style="font-size: 10pt; color: #7f9fbf; font-family: 'Courier New'">TODO</span></strong><span style="font-size: 10pt; color: #3f7f5f; font-family: 'Courier New'"> Auto-generated catch block</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">                  e.printStackTrace();</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            }</span></p> <p>5. <span style="font-family: 宋体">可以利用</span>JarOutputStream<span style="font-family: 宋体">来写</span>jar<span style="font-family: 宋体">包。必Mؓ</span>JarOutputStream <span style="font-family: 宋体">实例创徏臛_一?/span><span style="font-size: 10pt; background: silver; color: black; font-family: 'Courier New'">Entry</span><span style="font-size: 10pt; color: black; font-family: 宋体">Q可以调?/span><span style="font-size: 10pt; background: silver; color: black; font-family: 'Courier New'">putNextEntry</span><span style="font-size: 10pt; color: black; font-family: 宋体">Ҏ?/span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            Manifest mf = new Manifest();</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            JarOutputStream jar = </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> JarOutputStream(</span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> FileOutputStream(</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"MainTest.jar"</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">)</span><span style="font-size: 10pt; color: black; font-family: 宋体">Q?/span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">mf);</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            Properties properties = </span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> Properties();</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            jar.<span style="background: silver">putNextEntry</span>(</span><strong><span style="font-size: 10pt; color: #7f0055; font-family: 'Courier New'">new</span></strong><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> ZipEntry(</span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"MainTest.property"</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">));</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            properties.store(jar, </span><span style="font-size: 10pt; color: #2a00ff; font-family: 'Courier New'">"this is a test"</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">);</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">            jar.close();</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">6. </span><span style="font-size: 10pt; color: black; font-family: 宋体">得到</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">IJavaModle</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">      IJavaModel model = JavaCore.<em>create</em>(<span style="background: silver">ResourcesPlugin</span>.<em>getWorkspace</em>()</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">                              .getRoot());</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">      IJavaProject[] projects = model.getJavaProjects();</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'">      <span style="background: silver">IPackageFragmentRoot</span>[] roots = projects[i]                                          .getPackageFragmentRoots();</span></p> <p><span style="font-size: 10pt; color: black; font-family: 'Courier New'"> </span><span style="font-size: 10pt; color: black; font-family: 宋体">然后可以依次得到对应</span><span style="font-size: 10pt; color: black; font-family: 'Courier New'">elements</span></p> <img src ="http://www.aygfsteel.com/zjibo/aggbug/191925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/zjibo/" target="_blank">q来的兵</a> 2008-04-10 17:12 <a href="http://www.aygfsteel.com/zjibo/archive/2008/04/10/191925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用maven创徏新项目出现Unable to determine the release version错误 http://www.aygfsteel.com/zjibo/archive/2008/02/21/181127.htmlq来的兵q来的兵Thu, 21 Feb 2008 09:39:00 GMThttp://www.aygfsteel.com/zjibo/archive/2008/02/21/181127.htmlhttp://www.aygfsteel.com/zjibo/comments/181127.htmlhttp://www.aygfsteel.com/zjibo/archive/2008/02/21/181127.html#Feedback2http://www.aygfsteel.com/zjibo/comments/commentRss/181127.htmlhttp://www.aygfsteel.com/zjibo/services/trackbacks/181127.html  当用mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app来创Z个新目Ӟ有时候会出现以下错误Q?br />

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO]
----------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [archetype:create] (aggregator-style)
[INFO]
----------------------------------------------------------------------------
。。。。。。?br /> [INFO] Velocimacro : initialization complete.
[INFO] Velocity successfully started.
[INFO] [archetype:create]
[INFO] Defaulting package to group ID: com.mycompany.app
[INFO]
------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO]
------------------------------------------------------------------------
[INFO] Failed to resolve artifact.

GroupId: org.apache.maven.archetypes
ArtifactId: maven-archetype-quickstart
Version: RELEASE

Reason: Unable to determine the release version

Try downloading the file manually from the project website.

Then, install it using the command:
    mvn install:install-file -DgroupId=org.apache.maven.archetypes
-DartifactId=maven-arch
etype-quickstart \
        -Dversion=RELEASE -Dpackaging=jar -Dfile=/path/to/file

  org.apache.maven.archetypes:maven-archetype-quickstart:jar:RELEASE

 [INFO]
------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Tue Apr 17 07:08:50 MDT 2007
[INFO] Final Memory: 4M/8M
[INFO]
------------------------------------------------------------------------

        h意红色部分ؓ错误产生的根本原因,  ׃mavenq处于开发过E中Q开发方极有可能已经更新某个plug-in的版本,但本?/span>plug-in ?/span>metadata没有版本的信息或者没有最新版本的信息Q致?/span>maven无法下蝲正确的版本。同时请注意蓝色部分Q这是提C的解决办法。具体步骤如下:
    1.打开|址Q?/span>http://mirrors.ibiblio.org/pub/mirrors/maven2/org/apache/maven/archetypes/maven-archetype-quickstart/
    2.选择最新版本ƈ且下载最新的“maven-archetype-quickstart-1.0-alpha-4.jar ”文g
    3.安装q个archetype到maven本地仓库。用命令如下:mvn install:install-file -DgroupId=org.apache.maven.archtypes -Dar
tifactId=maven-archetype-quickstart -Dversion=1.0-alpha-4 -Dpackaging=jar -Dfile=c:\7000\maven\maven-archetype-quickstart-1.0-alpha-4.jar。注?Dfile是刚下蝲的文件的路径?br />     现在在cmd中执行mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app可以创建新目了?br />


q来的兵 2008-02-21 17:39 发表评论
]]>
mvn site 命o找不到site pluginshttp://www.aygfsteel.com/zjibo/archive/2008/02/21/181117.htmlq来的兵q来的兵Thu, 21 Feb 2008 09:36:00 GMThttp://www.aygfsteel.com/zjibo/archive/2008/02/21/181117.htmlhttp://www.aygfsteel.com/zjibo/comments/181117.htmlhttp://www.aygfsteel.com/zjibo/archive/2008/02/21/181117.html#Feedback4http://www.aygfsteel.com/zjibo/comments/commentRss/181117.htmlhttp://www.aygfsteel.com/zjibo/services/trackbacks/181117.html使用mvn site命o能很方便的帮助开发h员生产站点,但有时用这个命令会出现以下错误Q?br /> C:\7000\maven>mvn site
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Maven Default Project
[INFO]    task-segment: [site]
[INFO] ------------------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] The plugin 'org.apache.maven.plugins:maven-site-plugin' does not exist or
 no valid version could be found
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: < 1 second
[INFO] Finished at: Thu Feb 21 16:30:21 CST 2008
[INFO] Final Memory: 1M/2M
[INFO] ------------------------------------------------------------------------
产生原因Q?span lang="ZH-CN" style="font-family: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">׃mavenq处于开发过E中Q开发方极有可能已经更新某个plug-in的版本,但本?/span>plug-in ?/span>metadata没有版本的信息或者没有最新版本的信息Q致?/span>maven无法下蝲正确的版本?/span>
解决办法如下Q?br /> 1.?a ?br /> 2.删除原有的maven-metadata-central.xmlq且重命名刚下蝲的maven-metadate.xml为maven-metadata-central.xml?br /> 3.再次使用mvn siteQ你会发现maven会到q程仓库下蝲最新的site plug-in和相关jars包?/span>

q来的兵 2008-02-21 17:36 发表评论
]]>
վ֩ģ壺 Ϋ| ˳| | | ɽ| ƽ| Ϊ| ͤ| | Դ| Ѯ| | | ƽ| | | | | | | ̩| | ϲ| | ɽ| ˫| | ½| Ϫ| ƽ| ̨| | | ˶| | | ͬ| ƺ| | | |