Vulcan Spring 公司是家專業(yè)制造精密特種彈簧的美國(guó)企業(yè),成立于1967年,現(xiàn)坐落于紐約西南部的賓州泰爾夫德市,生產(chǎn)的彈簧被用于外太空探測(cè)領(lǐng)域,人造衛(wèi)星和火星上的漫游者號(hào)等.

Vulcan Spring公司生產(chǎn)的彈簧以精巧,精確和壽命長(zhǎng)而聞名,美國(guó)通用汽車GM公司、GE公司、摩托羅拉、波音公司、3M、埃默森Emerson公司等世界著名公司都是Vulcan公司的客戶。Vulcan 為客戶定制不同的彈簧。同時(shí),在英國(guó),德國(guó),法國(guó),意大利,中國(guó)臺(tái)灣、中國(guó)香港等國(guó)家和地區(qū)也有Vulcan公司的產(chǎn)品,Vulcan的產(chǎn)品 (PullBox等)在沃爾瑪?shù)却笮统袘?yīng)用廣泛.

Vulcan Spring工廠占地面積5600平方米,那里涵蓋了生產(chǎn)彈簧產(chǎn)品所有的生產(chǎn)工序.同時(shí),公司內(nèi)部還擁有一支設(shè)計(jì)經(jīng)驗(yàn)豐富、專業(yè)技術(shù)和制造能力過硬的彈簧設(shè)計(jì)專家隊(duì)伍,能快速提供客戶所需彈簧樣品,為客戶提供新產(chǎn)品設(shè)計(jì)并改善其現(xiàn)有產(chǎn)品的性能??蛻羧缬刑厥庖螅瑥椈蓪<覍f(xié)同客戶一起開發(fā)新產(chǎn)品.

Vulcan Spring 產(chǎn)品應(yīng)用范圍廣,可用于家電產(chǎn)品、動(dòng)力工具、電動(dòng)馬達(dá)、玩具、工業(yè)設(shè)備、辦公設(shè)備、“彈出式”陳列架、機(jī)械工具、電動(dòng)設(shè)備、電子、外科儀器、X射線和核磁共振設(shè)備等諸多領(lǐng)域.

主要產(chǎn)品包括:

Contorque(恒扭力彈簧) ,該產(chǎn)品采用獨(dú)到的設(shè)計(jì),Contorque彈簧在勢(shì)能不變的情況下可旋轉(zhuǎn)數(shù)圈,適于電纜延伸并可替代電池電機(jī)或配重。

電機(jī)電刷彈簧,為電機(jī)換向器電刷受力穩(wěn)固提供了理想手段,可減小電刷磨損,從而提高電機(jī)的作業(yè)性能。

Conpower動(dòng)力彈簧,這種彈簧在比力矩不高的情況下可旋轉(zhuǎn)很多圈。彈簧由心軸或盒提供旋轉(zhuǎn)能或借助滑輪或纜線來提供線性運(yùn)動(dòng)。Vulcan還制造非預(yù)應(yīng)力動(dòng)力彈簧。

機(jī)械卷筒,該產(chǎn)品能為需要平衡、回收或返回的應(yīng)用提供動(dòng)力。在需要長(zhǎng)偏轉(zhuǎn)的應(yīng)用中,機(jī)械卷筒供力穩(wěn)定且壽命期長(zhǎng)。

其他定制彈簧,從沖壓片和封槽到線材成形、扭力彈簧、十字扣帶和定制的板簧設(shè)計(jì)。

Vulcan Spring造價(jià)信息

市場(chǎng)價(jià) 信息價(jià) 詢價(jià)
材料名稱 規(guī)格/型號(hào) 市場(chǎng)價(jià)
(除稅)
工程建議價(jià)
(除稅)
行情 品牌 單位 稅率 供應(yīng)商 報(bào)價(jià)日期
LED永久信號(hào)燈PSD-SCE-TMSPRING PSD-S CE-TM SPRING 查看價(jià)格 查看價(jià)格

菲尼克斯

個(gè) 13% 長(zhǎng)沙市澤菲電氣有限公司
接線端子(PT) 品種:銅接線端子;訂貨號(hào):2018520000;標(biāo)準(zhǔn)包裝:1;規(guī)格型號(hào):CONTACT SPRING SAKS 3 PLATED; 查看價(jià)格 查看價(jià)格

魏德米勒

個(gè) 13% 北京康耐特自動(dòng)化技術(shù)有限公司
接線端子(PT) 品種:銅接線端子;訂貨號(hào):2018530000;標(biāo)準(zhǔn)包裝:1;規(guī)格型號(hào):CONTACT SPRING; 查看價(jià)格 查看價(jià)格

魏德米勒

個(gè) 13% 北京康耐特自動(dòng)化技術(shù)有限公司
接線端子(PT) 品種:銅接線端子;訂貨號(hào):4108440000;標(biāo)準(zhǔn)包裝:1;規(guī)格型號(hào):SPRING WASHER SAkg 32; 查看價(jià)格 查看價(jià)格

魏德米勒

個(gè) 13% 北京康耐特自動(dòng)化技術(shù)有限公司
花片 品種:釉面磚;用途:墻地磚;長(zhǎng)度(mm):450;寬度(mm):316;系列:瓷片系列;色類:spring(春天);編碼:LM45602B1 查看價(jià)格 查看價(jià)格

唯美

13% 上海樂闖實(shí)業(yè)有限公司
指紋鎖 ,令您倍享自在無憂生活。魔力鏡面觸摸屏,引領(lǐng)潮流之家:領(lǐng)先全球的獨(dú)特鏡面外觀設(shè)計(jì),更顯優(yōu)雅高貴,引領(lǐng)潮流時(shí)尚。;品種:指紋鎖;材質(zhì):外殼:鋁合金;內(nèi)殼:鋁合金;把手:鋅合金;規(guī)格型號(hào):VULCAN-F;鎖芯材質(zhì):不銹鋼 查看價(jià)格 查看價(jià)格

耶魯

13% 耶魯電子鎖專賣店
材料名稱 規(guī)格/型號(hào) 除稅
信息價(jià)
含稅
信息價(jià)
行情 品牌 單位 稅率 地區(qū)/時(shí)間
暫無數(shù)據(jù)
材料名稱 規(guī)格/需求量 報(bào)價(jià)數(shù) 最新報(bào)價(jià)
(元)
供應(yīng)商 報(bào)價(jià)地區(qū) 最新報(bào)價(jià)時(shí)間
PAM加藥泵 seko- spring系列, 泵頭pvc|1臺(tái) 1 查看價(jià)格 廣州創(chuàng)量環(huán)保設(shè)備有限公司 廣東   2018-01-25
PAC加藥泵 seko- spring系列, 泵頭pvc|1臺(tái) 1 查看價(jià)格 廣州創(chuàng)量環(huán)保設(shè)備有限公司 廣東   2018-01-25
墻紙 圖案:Rindle-Silver Spring 1370mm/1390mm 灰色背景色縱向波浪圖案|1m2 1 查看價(jià)格 上海迦樂裝飾材料有限公司    2015-12-04
系統(tǒng)回水循環(huán)水泵SPRINGN32-300:額定功率0.75kw 系統(tǒng)回水循環(huán)水泵SPRING N32-300:額定功率0.75kw|8臺(tái) 3 查看價(jià)格 成都華寶熱能設(shè)備有限公司 四川   2022-06-17
虛擬化與云管平臺(tái)-云管平臺(tái) 管理平臺(tái)兼容主流x86虛擬化平臺(tái),支持KVM、VMware、Hyper-V、Xenserver等.4、云管理平臺(tái)支持?jǐn)U展主流小型機(jī)虛擬化平臺(tái),支持PowerVM、HPVM等.5、云管理平臺(tái)支持業(yè)界主流的容器技術(shù) Docker 及容器編排引擎 Kubernetes,支持Spring|1套 3 查看價(jià)格 北京神州新橋科技有限公司 全國(guó)   2022-04-29

Vulcan Spring常見問題

  • spring鍋具怎么樣

    媒體評(píng)為鍋具中的奔馳,鍋具中的香奈兒    完美的水封設(shè)計(jì),將鍋內(nèi)水氣留住,維持食物的色澤與鮮美,真正達(dá)到無水烹調(diào)的極致。五曾復(fù)合合金傳熱極佳,熱能能有效均勻的傳達(dá)至鍋底到鍋身,...

  • 瑞士鍋具力康和spring哪個(gè)更好?

    您好,據(jù)我所知瑞士瑞蓮鍋具質(zhì)量還算是不錯(cuò)。spring沒用過也不好亂說 鍋產(chǎn)品質(zhì)量在二線品牌中算是挺好的,質(zhì)量一點(diǎn)也不比一線中一些品牌差,做工精細(xì),好漂亮的又好用,外觀光可鑒人,手感厚實(shí)光滑,很高大上...

  • spring廚具怎么樣?

    spring是中國(guó)最大、全球第二的炊具研發(fā)制造商,中國(guó)廚房小家電領(lǐng)先品牌。產(chǎn)品的技術(shù)都是國(guó)內(nèi)最新的,質(zhì)量更是有幾十年沉淀的口碑在那里。

Vulcan Spring文獻(xiàn)

【免費(fèi)下載】Spring框架課程設(shè)計(jì)指導(dǎo)書 【免費(fèi)下載】Spring框架課程設(shè)計(jì)指導(dǎo)書

格式:pdf

大小:82KB

頁數(shù): 6頁

評(píng)分: 4.4

Spring 框架 課程設(shè)計(jì)指導(dǎo)書 長(zhǎng)春工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院 2015 年 7 月 1 一、實(shí)驗(yàn)?zāi)康?Spring 是一個(gè)開源框架,是為了解決企業(yè)應(yīng)用程序開發(fā)復(fù)雜性而創(chuàng)建的。 框架的主要優(yōu)勢(shì)之一就是其分層架構(gòu),分層架構(gòu)允許您選擇使用哪一個(gè)組件, 同時(shí)為 J2EE 應(yīng)用程序開發(fā)提供集成的框架。 按照所學(xué)的知識(shí),設(shè)計(jì)開發(fā)一個(gè)小型的電子商務(wù)類系統(tǒng)。旨在通過完成一 個(gè)項(xiàng)目的開發(fā) ,通過實(shí)際問題培養(yǎng)學(xué)生的動(dòng)手能力,并且使學(xué)生更加深入的理解 和靈活掌握教學(xué)內(nèi)容。通過實(shí)驗(yàn)使學(xué)生更加熟練的掌握 Myeclipse 的使用,使 學(xué)生更加深入的了解 java web 的開源框架的使用。 二、實(shí)驗(yàn)要求 1、課程設(shè)計(jì)時(shí)間為一周,以 3 人為一小組,每個(gè)小組在設(shè)計(jì)的第一天進(jìn) 行選題,制訂進(jìn)度計(jì)劃,分配任務(wù),在設(shè)計(jì)的最后一天整理系統(tǒng)文檔,形成設(shè) 計(jì)報(bào)告。 2、根據(jù)課程設(shè)計(jì)的目的、要求認(rèn)真準(zhǔn)備。不遲到、不早

立即下載
基于Struts 2+JPA+Spring 2架構(gòu)的IT服務(wù)臺(tái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 基于Struts 2+JPA+Spring 2架構(gòu)的IT服務(wù)臺(tái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

格式:pdf

大?。?span id="tpzc6pe" class="single-tag-height">82KB

頁數(shù): 5頁

評(píng)分: 4.8

在Jave EE應(yīng)用開發(fā)中,使用優(yōu)秀的框架可以提高系統(tǒng)的開發(fā)效率、更穩(wěn)定的性能、同時(shí)有利于后期的維護(hù)和更新。通過整合Struts 2、JPA、Spring 2三個(gè)框架,構(gòu)建了一種輕量級(jí)Java EE架構(gòu)。該架構(gòu)以Spring 2為核心,整合JPA進(jìn)行持久化訪問;整合Struts 2以MVC模式控制。并利用此架構(gòu)設(shè)計(jì)開發(fā)了基于ITIL的IT服務(wù)管理中服務(wù)臺(tái)系統(tǒng)。實(shí)踐證明,該架構(gòu)使得項(xiàng)目開發(fā)簡(jiǎn)潔、結(jié)構(gòu)清晰,并具有良好的復(fù)用性、擴(kuò)展性和可維護(hù)性。

立即下載

其主要功能有:①控制機(jī)械的運(yùn)動(dòng),如內(nèi)燃機(jī)中的閥門彈簧、離合器中的控制彈簧等。②吸收振動(dòng)和沖擊能量,如汽車、火車車廂下的緩沖彈簧、聯(lián)軸器中的吸振彈簧等。③儲(chǔ)存及輸出能量作為動(dòng)力,如鐘表彈簧、槍械中的彈簧等。④用作測(cè)力元件,如測(cè)力器、彈簧秤中的彈簧等。彈簧的載荷與變形之比稱為彈簧剛度,剛度越大,則彈簧越硬。

按受力性質(zhì),彈簧可分為拉伸彈簧、壓縮彈簧、扭轉(zhuǎn)彈簧和彎曲彈簧,按形狀可分為螺旋彈簧、碟形彈簧、環(huán)形彈簧、板彈簧、平面蝸卷彈簧以及扭桿彈簧等。普通圓柱螺旋彈簧由于制造簡(jiǎn)單,且可根據(jù)受載情況制成各種型式,結(jié)構(gòu)簡(jiǎn)單,故應(yīng)用最廣。彈簧的制造材料一般來說應(yīng)具有高的彈性極限、疲勞極限、沖擊韌性及良好的熱處理性能等,常用的有碳素彈簧鋼、合金彈簧鋼、不銹彈簧鋼以及銅合金、鎳合金和橡膠等。彈簧的制造方法有冷卷法和熱卷法。彈簧絲直徑小于8毫米的一般用冷卷法,大于8毫米的用熱卷法。有些彈簧在制成后還要進(jìn)行強(qiáng)壓或噴丸處理,可提高彈簧的承載能力。

來源:hengyunabc ,

hengyunabc.github.io/depth-analysis-hibernate-validar-noclassdefounderror/

問題

可重現(xiàn)的Demo代碼:demo.zip

http://hengyunabc.github.io/img/demo.zip

最近排查一個(gè)spring boot應(yīng)用拋出hibernate.validator NoClassDefFoundError的問題,異常信息如下:

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl

at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:33) ~[hibernate-validator-5.3.5.Final.jar:5.3.5.Final]

at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276) ~[validation-api-1.1.0.Final.jar:na]

at org.springframework.boot.validation.MessageInterpolatorFactory.getObject(MessageInterpolatorFactory.java:53) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]

at org.springframework.boot.autoconfigure.validation.DefaultValidatorConfiguration.defaultValidator(DefaultValidatorConfiguration.java:43) ~[spring-boot-autoconfigure-1.5.3.RELEASE.jar:1.5.3.RELEASE]

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_112]

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_112]

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_112]

at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_112]

at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.8.RELEASE.jar:4.3.8.RELEASE]

... 32 common frames omitted

這個(gè)錯(cuò)誤信息表面上是NoClassDefFoundError,但是實(shí)際上ConfigurationImpl這個(gè)類是在hibernate-validator-5.3.5.Final.jar里的,不應(yīng)該出現(xiàn)找不到類的情況。

那為什么應(yīng)用里拋出這個(gè)NoClassDefFoundError ?

有經(jīng)驗(yàn)的開發(fā)人員從Could not initialize class 這個(gè)信息就可以知道,實(shí)際上是一個(gè)類在初始化時(shí)拋出的異常,比如static的靜態(tài)代碼塊,或者static字段初始化的異常。

誰初始化了 org.hibernate.validator.internal.engine.ConfigurationImpl

但是當(dāng)我們?cè)贖ibernateValidator 這個(gè)類,創(chuàng)建ConfigurationImpl的代碼塊里打斷點(diǎn)時(shí),發(fā)現(xiàn)有兩個(gè)線程觸發(fā)了斷點(diǎn):

public class HibernateValidator implements ValidationProvider<HibernateValidatorConfiguration> {

@Override

public Configuration<?> createGenericConfiguration(BootstrapState state) {

return new ConfigurationImpl( state );

}

其中一個(gè)線程的調(diào)用棧是:

Thread [background-preinit] (Class load: ConfigurationImpl)

HibernateValidator.createGenericConfiguration(BootstrapState) line: 33

Validation$GenericBootstrapImpl.configure() line: 276

BackgroundPreinitializer$ValidationInitializer.run() line: 107

BackgroundPreinitializer$1.runSafely(Runnable) line: 59

BackgroundPreinitializer$1.run() line: 52

Thread.run() line: 745

另外一個(gè)線程調(diào)用棧是:

Thread [main] (Suspended (breakpoint at line 33 in HibernateValidator))

owns: ConcurrentHashMap<K,V> (id=52)

owns: Object (id=53)

HibernateValidator.createGenericConfiguration(BootstrapState) line: 33

Validation$GenericBootstrapImpl.configure() line: 276

MessageInterpolatorFactory.getObject() line: 53

DefaultValidatorConfiguration.defaultValidator() line: 43

NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]

NativeMethodAccessorImpl.invoke(Object, Object[]) line: 62

DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43

Method.invoke(Object, Object...) line: 498

CglibSubclassingInstantiationStrategy(SimpleInstantiationStrategy).instantiate(RootBeanDefinition, String, BeanFactory, Object, Method, Object...) line: 162

ConstructorResolver.instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 588

DefaultListableBeanFactory(AbstractAutowireCapableBeanFactory).instantiateUsingFactoryMethod(String, RootBeanDefinition, Object[]) line: 1173

顯然,這個(gè)線程的調(diào)用棧是常見的spring的初始化過程。

BackgroundPreinitializer 做了什么

那么重點(diǎn)來看下 BackgroundPreinitializer 線程做了哪些事情:

@Order(LoggingApplicationListener.DEFAULT_ORDER + 1)

public class BackgroundPreinitializer

implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {

@Override

public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {

try {

Thread thread = new Thread(new Runnable() {

@Override

public void run() {

runSafely(new MessageConverterInitializer());

runSafely(new MBeanFactoryInitializer());

runSafely(new ValidationInitializer());

runSafely(new JacksonInitializer());

runSafely(new ConversionServiceInitializer());

}

public void runSafely(Runnable runnable) {

try {

runnable.run();

}

catch (Throwable ex) {

// Ignore

}

}

}, "background-preinit");

thread.start();

}

可以看到BackgroundPreinitializer類是spring boot為了加速應(yīng)用的初始化,以一個(gè)獨(dú)立的線程來加載hibernate validator這些組件。

這個(gè) background-preinit 線程會(huì)吞掉所有的異常。

顯然ConfigurationImpl 初始化的異常也被吞掉了,那么如何才能獲取到最原始的信息?

獲取到最原始的異常信息

在BackgroundPreinitializer的 run() 函數(shù)里打一個(gè)斷點(diǎn)(注意是Suspend thread類型, 不是Suspend VM),讓它先不要觸發(fā)ConfigurationImpl的加載,讓spring boot的正常流程去觸發(fā)ConfigurationImpl的加載,就可以知道具體的信息了。

那么打出來的異常信息是:

Caused by: java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object;

at org.hibernate.validator.internal.util.logging.LoggerFactory.make(LoggerFactory.java:19) ~[hibernate-validator-5.3.5.Final.jar:5.3.5.Final]

at org.hibernate.validator.internal.util.Version.<clinit>(Version.java:22) ~[hibernate-validator-5.3.5.Final.jar:5.3.5.Final]

at org.hibernate.validator.internal.engine.ConfigurationImpl.<clinit>(ConfigurationImpl.java:71) ~[hibernate-validator-5.3.5.Final.jar:5.3.5.Final]

at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:33) ~[hibernate-validator-5.3.5.Final.jar:5.3.5.Final]

at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:276) ~[validation-api-1.1.0.Final.jar:na]

at org.springframework.boot.validation.MessageInterpolatorFactory.getObject(MessageInterpolatorFactory.java:53) ~[spring-boot-1.5.3.RELEASE.jar:1.5.3.RELEASE]

那么可以看出是 org.jboss.logging.Logger 這個(gè)類不兼容,少了getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object 這個(gè)函數(shù)。

那么檢查下應(yīng)用的依賴,可以發(fā)現(xiàn)org.jboss.logging.Logger 在jboss-common-1.2.1.GA.jar和jboss-logging-3.3.1.Final.jar里都有。

顯然是jboss-common-1.2.1.GA.jar 這個(gè)依賴過時(shí)了,需要排除掉。

總結(jié)異常的發(fā)生流程

應(yīng)用依賴了jboss-common-1.2.1.GA.jar,它里面的org.jboss.logging.Logger太老 spring boot啟動(dòng)時(shí),BackgroundPreinitializer里的線程去嘗試加載ConfigurationImpl,然后觸發(fā)了org.jboss.logging.Logger的函數(shù)執(zhí)行問題 BackgroundPreinitializer 吃掉了異常信息,jvm把ConfigurationImpl標(biāo)記為不可用的 spring boot正常的流程去加載ConfigurationImpl,jvm發(fā)現(xiàn)ConfigurationImpl類是不可用,直接拋出NoClassDefFoundError

Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl

深入JVM

為什么第二次嘗試加載ConfigurationImpl時(shí),會(huì)直接拋出java.lang.NoClassDefFoundError: Could not initialize class ?

下面用一段簡(jiǎn)單的代碼來重現(xiàn)這個(gè)問題:

try {

org.hibernate.validator.internal.util.Version.touch();

} catch (Throwable e) {

e.printStackTrace();

}

System.in.read();

try {

org.hibernate.validator.internal.util.Version.touch();

} catch (Throwable e) {

e.printStackTrace();

}

使用HSDB來確定類的狀態(tài)

當(dāng)拋出第一個(gè)異常時(shí),嘗試用HSDB來看下這個(gè)類的狀態(tài)。

sudo java -classpath "$JAVA_HOME/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB

然后在HSDB console里查找到Version的地址信息

hsdb> class org.hibernate.validator.internal.util.Version

org/hibernate/validator/internal/util/Version @0x00000007c0060218

然后在Inspector查找到這個(gè)地址,發(fā)現(xiàn)_init_state是5。

再看下hotspot代碼,可以發(fā)現(xiàn)5對(duì)應(yīng)的定義是initialization_error:

// /hotspot/src/share/vm/oops/instanceKlass.hpp

// See "The Java Virtual Machine Specification" section 2.16.2-5 for a detailed deion

// of the class loading & initialization procedure, and the use of the states.

enum ClassState {

allocated, // allocated (but not yet linked)

loaded, // loaded and inserted in class hierarchy (but not linked yet)

linked, // successfully linked/verified (but not initialized yet)

being_initialized, // currently running class initializer

fully_initialized, // initialized (successfull final state)

initialization_error // error happened during initialization

};

JVM規(guī)范里關(guān)于Initialization的內(nèi)容

http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html#jvms-5.5

從規(guī)范里可以看到初始一個(gè)類/接口有12步,比較重要的兩步都用黑體標(biāo)記出來了:

5: If the Class object for C is in an erroneous state, then initialization is not possible. Release LC and throw a NoClassDefFoundError. 11: Otherwise, the class or interface initialization method must have completed abruptly by throwing some exception E. If the class of E is not Error or one of its subclasses, then create a new instance of the class ExceptionInInitializerError with E as the argument, and use this object in place of E in the following step.

第一次嘗試加載Version類時(shí)

當(dāng)?shù)谝淮螄L試加載時(shí),hotspot InterpreterRuntime在解析invokestatic指令時(shí),嘗試加載org.hibernate.validator.internal.util.Version類,InstanceKlass的_init_state先是標(biāo)記為being_initialized,然后當(dāng)加載失敗時(shí),被標(biāo)記為initialization_error。

對(duì)應(yīng)Initialization的11步。

// hotspot/src/share/vm/oops/instanceKlass.cpp

// Step 10 and 11

Handle e(THREAD, PENDING_EXCEPTION);

CLEAR_PENDING_EXCEPTION;

// JVMTI has already reported the pending exception

// JVMTI internal flag reset is needed in order to report ExceptionInInitializerError

JvmtiExport::clear_detected_exception((JavaThread*)THREAD);

{

EXCEPTION_MARK;

this_oop->set_initialization_state_and_notify(initialization_error, THREAD);

CLEAR_PENDING_EXCEPTION; // ignore any exception thrown, class initialization error is thrown below

// JVMTI has already reported the pending exception

// JVMTI internal flag reset is needed in order to report ExceptionInInitializerError

JvmtiExport::clear_detected_exception((JavaThread*)THREAD);

}

DTRACE_CLASSINIT_PROBE_WAIT(error, InstanceKlass::cast(this_oop()), -1,wait);

if (e->is_a(SystemDictionary::Error_klass())) {

THROW_OOP(e());

} else {

JavaCallArguments args(e);

THROW_ARG(vmSymbols::java_lang_ExceptionInInitializerError(),

vmSymbols::throwable_void_signature(),

&args);

}

第二次嘗試加載Version類時(shí)

當(dāng)?shù)诙螄L試加載時(shí),檢查InstanceKlass的_init_state是initialization_error,則直接拋出NoClassDefFoundError: Could not initialize class.

對(duì)應(yīng)Initialization的5步。

// hotspot/src/share/vm/oops/instanceKlass.cpp

void InstanceKlass::initialize_impl(instanceKlassHandle this_oop, TRAPS) {

// ...

// Step 5

if (this_oop->is_in_error_state()) {

DTRACE_CLASSINIT_PROBE_WAIT(erroneous, InstanceKlass::cast(this_oop()), -1,wait);

ResourceMark rm(THREAD);

const char* desc = "Could not initialize class ";

const char* className = this_oop->external_name();

size_t msglen = strlen(desc) + strlen(className) + 1;

char* message = NEW_RESOURCE_ARRAY(char, msglen);

if (NULL == message) {

// Out of memory: can't create detailed error message

THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), className);

} else {

jio_snprintf(message, msglen, "%s%s", desc, className);

THROW_MSG(vmSymbols::java_lang_NoClassDefFoundError(), message);

}

}

總結(jié)

彈力測(cè)試儀目的

本機(jī)專為沙發(fā)彈簧框架和彈簧包而設(shè)計(jì)的測(cè)試儀器,它可滿足以下三種測(cè)試要求

This tester is designed for the test of the zig-zag spring assembly and spring pack used in sofa manufacturing , it can perform the following 3 kinds of test requirements

1)耐久性測(cè)試 / Durability Tes 可按預(yù)設(shè)定之壓力條件進(jìn)行重復(fù)按壓測(cè)試,周期可預(yù)設(shè)定,到數(shù)自動(dòng)停止。

The spring undergone a repeated specific force , the test cycles is pre-settable, and the test stop when the set cycle is up.

2)壓縮量程與壓力關(guān)系檢測(cè) / Fix stroke test

壓板按預(yù)設(shè)定行程下壓, 到位停止。在壓力表上讀取該行程的彈簧力.

The presser comes down to a specify stoke, read the force on that stroke from the pressure gauge.

3)特定壓力下彈簧壓縮量檢測(cè) / Fix force test

壓板下壓至設(shè)定壓力后停止,顯示屏上顯示該壓力值的壓縮行程長(zhǎng)度。

The presser comes down to a specify force, the presser stop and the compression rate (stroke)

will be displayed on the screen.

注:

a) 本機(jī)最大壓力 = 80 公斤, 最高按壓行程150 mm。

b) 壓力傳感器精度:0.3% FS

c) 行程精度 : ±0.2 mm

d)電源: 220伏, 功率= 400瓦

Vulcan Spring相關(guān)推薦
  • 相關(guān)百科
  • 相關(guān)知識(shí)
  • 相關(guān)專欄

最新詞條

安徽省政采項(xiàng)目管理咨詢有限公司 數(shù)字景楓科技發(fā)展(南京)有限公司 懷化市人民政府電子政務(wù)管理辦公室 河北省高速公路京德臨時(shí)籌建處 中石化華東石油工程有限公司工程技術(shù)分公司 手持無線POS機(jī) 廣東合正采購(gòu)招標(biāo)有限公司 上海城建信息科技有限公司 甘肅鑫禾國(guó)際招標(biāo)有限公司 燒結(jié)金屬材料 齒輪計(jì)量泵 廣州采陽招標(biāo)代理有限公司河源分公司 高鋁碳化硅磚 博洛尼智能科技(青島)有限公司 燒結(jié)剛玉磚 深圳市東海國(guó)際招標(biāo)有限公司 搭建香蕉育苗大棚 SF計(jì)量單位 福建省中億通招標(biāo)咨詢有限公司 泛海三江 威海鼠尾草 Excel 數(shù)據(jù)處理與分析應(yīng)用大全 廣東國(guó)咨招標(biāo)有限公司 甘肅中泰博瑞工程項(xiàng)目管理咨詢有限公司 山東創(chuàng)盈項(xiàng)目管理有限公司 當(dāng)代建筑大師 廣西北纜電纜有限公司 拆邊機(jī) 大山檳榔 上海地鐵維護(hù)保障有限公司通號(hào)分公司 甘肅中維國(guó)際招標(biāo)有限公司 舌花雛菊 湖北鑫宇陽光工程咨詢有限公司 GB8163標(biāo)準(zhǔn)無縫鋼管 中國(guó)石油煉化工程建設(shè)項(xiàng)目部 華潤(rùn)燃?xì)猓ㄉ虾#┯邢薰? 韶關(guān)市優(yōu)采招標(biāo)代理有限公司 莎草目 建設(shè)部關(guān)于開展城市規(guī)劃動(dòng)態(tài)監(jiān)測(cè)工作的通知 電梯平層準(zhǔn)確度 廣州利好來電氣有限公司 四川中澤盛世招標(biāo)代理有限公司