bestlong 怕失憶筆記

當健忘由隨機逐漸趨向常態時,作筆記是非常必要的

Entries Tagged ‘Java’

SEVERE: Problems copying method. Incompatible JVM?

接手幾個基於 Grails 2.3.11 的老專案,用 SDKMan 很方便的安裝好 OpenJDK 8 與 Grails 開發環境後,開始一陣操弄

grails clean

先碰到 Resolve error obtaining dependencies 錯誤,因為 maven repositories 網址都改變了需要手動替換 mavenRepo 設定

grails compile

相依性處理到沒問題後

grails run-app

炸了,錯誤訊息節錄如下:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
Oct 05, 2022 8:06:32 PM org.springsource.loaded.jvm.JVM copyMethod
SEVERE: Problems copying method. Incompatible JVM?
java.lang.reflect.InvocationTargetException
        at sun.reflect.GeneratedMethodAccessor53.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.springsource.loaded.jvm.JVM.copyMethod(JVM.java:134)
        at org.springsource.loaded.ri.OriginalClassInvoker.createJavaMethod(OriginalClassInvoker.java:68)
        at org.springsource.loaded.ri.ReflectiveInterceptor.jlClassGetMethods(ReflectiveInterceptor.java:168)
        at org.springframework.beans.ExtendedBeanInfoFactory.supports(ExtendedBeanInfoFactory.java:53)
        at org.springframework.beans.ExtendedBeanInfoFactory.getBeanInfo(ExtendedBeanInfoFactory.java:45)
        at org.springframework.beans.CachedIntrospectionResults.<init>(CachedIntrospectionResults.java:270)
        at org.springframework.beans.CachedIntrospectionResults.forClass(CachedIntrospectionResults.java:186)
        at org.springframework.beans.BeanUtils.getPropertyDescriptors(BeanUtils.java:360)
        at org.codehaus.groovy.grails.commons.ClassPropertyFetcher.init(ClassPropertyFetcher.java:193)
        at org.codehaus.groovy.grails.commons.ClassPropertyFetcher.<init>(ClassPropertyFetcher.java:91)
        at org.codehaus.groovy.grails.commons.ClassPropertyFetcher.forClass(ClassPropertyFetcher.java:82)
        at org.codehaus.groovy.grails.commons.ClassPropertyFetcher.forClass(ClassPropertyFetcher.java:63)
        at org.codehaus.groovy.grails.commons.AbstractGrailsClass.<init>(AbstractGrailsClass.java:84)
        at org.codehaus.groovy.grails.plugins.AbstractGrailsPlugin$GrailsPluginClass.<init>(AbstractGrailsPlugin.java:65)
        at org.codehaus.groovy.grails.plugins.DefaultGrailsPlugin.initialisePlugin(DefaultGrailsPlugin.java:138)
        at org.codehaus.groovy.grails.plugins.DefaultGrailsPlugin.<init>(DefaultGrailsPlugin.java:117)
        at org.codehaus.groovy.grails.plugins.DefaultGrailsPlugin.<init>(DefaultGrailsPlugin.java:264)
        at org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager.createGrailsPlugin(DefaultGrailsPluginManager.java:412)
        at org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager.findUserPlugins(DefaultGrailsPluginManager.java:437)
        at org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager.attemptLoadPlugins(DefaultGrailsPluginManager.java:349)
        at org.codehaus.groovy.grails.plugins.DefaultGrailsPluginManager.loadPlugins(DefaultGrailsPluginManager.java:257)
        at org.codehaus.groovy.grails.project.plugins.GrailsProjectPluginLoader$_loadPlugins_closure2.doCall(GrailsProjectPluginLoader.groovy:95)
        at org.codehaus.groovy.grails.project.plugins.GrailsProjectPluginLoader$_loadPlugins_closure2.doCall(GrailsProjectPluginLoader.groovy)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at org.springsource.loaded.ri.ReflectiveInterceptor.jlrMethodInvoke(ReflectiveInterceptor.java:1270)
        at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1086)
        at groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1110)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:910)
        at groovy.lang.Closure.call(Closure.java:411)
        at groovy.lang.Closure.call(Closure.java:405)
        at org.codehaus.groovy.grails.cli.api.BaseSettingsApi.profile(BaseSettingsApi.java:342)
        at org.codehaus.groovy.grails.project.plugins.GrailsProjectPluginLoader.loadPlugins(GrailsProjectPluginLoader.groovy:91)
        at org.codehaus.groovy.grails.plugins.GrailsPluginManagerFactoryBean.afterPropertiesSet(GrailsPluginManagerFactoryBean.java:74)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1571)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1509)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:296)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:293)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:615)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
        at org.codehaus.groovy.grails.web.context.GrailsContextLoader.initWebApplicationContext(GrailsContextLoader.java:70)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4973)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5467)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Can not copy a non-root Method
        at java.lang.reflect.Method.copy(Method.java:151)
        ... 65 more

搜尋網路後發現最低從 1.8.0_40 版本開始碰到相同問題

只好到 Oracle Java archive 去下載舊版 JDK

https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html

下載使用 Java SE Development Kit 8u40 版本測試確實會碰到問題

接著使用 Java SE Development Kit 8u31 版本可以讓 grails run-app 正常啟動,不過這樣的選擇是否能穩定運作無法保證。有疑慮可考慮改用 JDK 7 的最終版本。

Leave a Comment

使用 netbeans 開發網站要如何產生 war 檔?

其實,用 netbeans IDE 開發 jsp 網站,只需要做 Build Project 就可以產生 WAR (Web Application Archive) 檔了。

首先我們來看一下剛建立好的 Java Web Application 專案結構,如下圖:

2014-03-23 16_41_09-NetBeans IDE 7.3.1

然後切換到 Files 頁籤來看一下實際有哪些檔案:

2014-03-23 16_42_58-WebApplication1 - NetBeans IDE 7.3.1

在來回到 Projects 頁籤後選擇專案後,滑鼠右鍵看到 Build 就點下去,如下圖:

2014-03-23 16_43_45-WebApplication1 - NetBeans IDE 7.3.1

若沒有出現任何錯誤的話,經過幾秒鐘後再次切換到 Files 頁籤就可以看到完成 Build 之後有多出一個 dist 目錄,裡面就有打包好的 war 檔了,如下圖:

2014-03-23 16_44_38-WebApplication1 - NetBeans IDE 7.3.1

真的非常簡單與方便。

Leave a Comment

Java API Class 不會用! 搜尋引擎找範例給你

Java API Class 規模非常龐大,市面上的書籍也因為篇幅有限無法做詳盡的介紹而且範例程式碼也不多。看官方文件有時又像天書令人摸不著頭緒。想看 Open Source 的內容又要大費周章。

在網路上發現了這個程式碼搜尋引擎,他是以幾個具高知名度的 Java 開放原始碼專案例如:ant、Tomcat、Spring…等的程式碼,經過分析後所建立的資料庫,可以方便的查詢某個 Class 是在這些專案中是如何應用的。

例如用:Thread 這個當關鍵字來查詢,就出現:

先列出相關的 Java API Class 清單,再來進入 currentThread 來看看

可以看到下圖查詢結果中有顯示在那個專案的那個程式碼以及行號位置

還可進一步點選 Class 的連結直接檢視該 Class 實作的完整內容

這樣就可以很快的去研究別人是如何實作的,來提昇學習與開發效率,真的很方便。

http://www.jexamples.com/

Comments (1)

使用 jTDS 連接 MSSQL

在 iReport 中連接 MS SQL Server 資料庫可以使用 jTDS
而 jTDS-1.2.2 的預設屬性是支援 8.0 也就是一般稱為 2000 的 SQL Server
一般會設定 JDBC URL 如下

jdbc:jtds:sqlserver://ServerAddress/DBName;instance=

當需要連接 7.0 或是 6.5 等先前版本的 SQL Server 時就會出現下列錯誤訊息

1
2
3
4
5
6
7
Message:
    java.sql.SQLException: I/O Error: Stream 0 attempting to read when no request has been sent
Level:
    SEVERE
Stack Trace:
    net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2307)
...之後省略

這時只要在 JDBC URL 中增加屬性調整 TDS

連接 SQL 7.0

jdbc:jtds:sqlserver://ServerAddress/DBName;instance=;TDS=5.0

連接 SQL 6.5

jdbc:jtds:sqlserver://ServerAddress/DBName;instance=;TDS=4.2

但基本上只有連線到 SQL 6.5 才需要指定,若是連接到 SQL 7.0 時 jTDS 會自動偵測調整。

詳細資料可以參考 jTDS 官方FAQ文件 http://jtds.sourceforge.net/faq.html

Comments (2)

  • 工商服務

    廣告讀取中...
  • 近期留言

  • 標籤

  • 彙整