try-with-resources
diff --git a/jena-base/src/main/java/org/apache/jena/atlas/io/IOX.java b/jena-base/src/main/java/org/apache/jena/atlas/io/IOX.java
index f96bd0b..a25fe6b 100644
--- a/jena-base/src/main/java/org/apache/jena/atlas/io/IOX.java
+++ b/jena-base/src/main/java/org/apache/jena/atlas/io/IOX.java
@@ -125,7 +125,7 @@
     }
 
     /**
-     * Write a file safely, but allow system to use copy-delete if the chnage can not
+     * Write a file safely, but allow system to use copy-delete if the change can not
      * be done atomically. Prefer {@link #safeWrite} which requires an atomic move.
      */
     public static boolean safeWriteOrCopy(Path file, Path tmpFile, IOConsumer<OutputStream> writerAction) {
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/StAX2ModelTest.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/StAX2ModelTest.java
index 6d05122..60c8a6a 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/StAX2ModelTest.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput0/StAX2ModelTest.java
@@ -1160,20 +1160,15 @@
         Model expected = ModelFactory.createDefaultModel();
         Model got = ModelFactory.createDefaultModel();
 
-        InputStream in;
-
         // Load expected using normal mechanism
-        try {
-            in = new FileInputStream(file);
+        try (InputStream in = new FileInputStream(file)) {
             expected.read(in, base);
-            in.close();
         } catch (Exception e) { return; }
 
-        in = new FileInputStream(file);
-        XMLEventReader eventStream = inputFactory.createXMLEventReader(base, in);
-        StAX2Model.read(eventStream, got, base);
-        in.close();
-
+        try (InputStream in = new FileInputStream(file)) {
+            XMLEventReader eventStream = inputFactory.createXMLEventReader(base, in);
+            StAX2Model.read(eventStream, got, base);
+        }
         boolean result = expected.isIsomorphicWith(got);
 
         /*if (!result) {
diff --git a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestsStAX2Model.java b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestsStAX2Model.java
index 8a132e4..f574d88 100644
--- a/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestsStAX2Model.java
+++ b/jena-core/src/test/java/org/apache/jena/rdfxml/xmlinput1/TestsStAX2Model.java
@@ -1160,20 +1160,15 @@
         Model expected = ModelFactory.createDefaultModel();
         Model got = ModelFactory.createDefaultModel();
 
-        InputStream in;
-
         // Load expected using normal mechanism
-        try {
-            in = new FileInputStream(file);
+        try (InputStream in = new FileInputStream(file)) {
             expected.read(in, base);
-            in.close();
         } catch (Exception e) { return; }
 
-        in = new FileInputStream(file);
-        XMLEventReader eventStream = inputFactory.createXMLEventReader(base, in);
-        StAX2Model.read(eventStream, got, base);
-        in.close();
-
+        try (InputStream in = new FileInputStream(file)) {
+            XMLEventReader eventStream = inputFactory.createXMLEventReader(base, in);
+            StAX2Model.read(eventStream, got, base);
+        }
         boolean result = expected.isIsomorphicWith(got);
 
         /*if (!result) {
diff --git a/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionFuseki.java b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionFuseki.java
index e2f643b..dfc8cbe 100644
--- a/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionFuseki.java
+++ b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionFuseki.java
@@ -21,6 +21,7 @@
 import org.apache.jena.atlas.logging.LogCtl;
 import org.apache.jena.fuseki.Fuseki;
 import org.apache.jena.fuseki.main.FusekiTestLib;
+import org.apache.jena.query.QueryExecution;
 import org.apache.jena.query.QueryParseException;
 import org.apache.jena.query.ResultSet;
 import org.apache.jena.rdfconnection.RDFConnection;
@@ -58,9 +59,14 @@
             String level = LogCtl.getLevel(Fuseki.actionLog);
             try {
                 LogCtl.setLevel(Fuseki.actionLog, "ERROR");
-                FusekiTestLib.expectQueryFail(()->conn.query("FOOBAR").execSelect(), Code.BAD_REQUEST);
+                Runnable action = ()-> {
+                    try( QueryExecution qExec = conn.query("FOOBAR") ) {
+                        qExec.execSelect();
+                    }};
+                FusekiTestLib.expectQueryFail(action, Code.BAD_REQUEST);
             } finally {
                 LogCtl.setLevel(Fuseki.actionLog, level);
+                conn.close();
             }
         }
     }
diff --git a/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
index 8764c6c..3237a79 100644
--- a/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
+++ b/jena-integration-tests/src/test/java/org/apache/jena/test/rdfconnection/TestRDFConnectionRemote.java
@@ -24,6 +24,7 @@
 import org.apache.jena.fuseki.Fuseki;
 import org.apache.jena.fuseki.main.FusekiServer ;
 import org.apache.jena.fuseki.main.FusekiTestLib;
+import org.apache.jena.query.QueryExecution;
 import org.apache.jena.query.QueryParseException;
 import org.apache.jena.query.ResultSet;
 import org.apache.jena.rdf.model.Model;
@@ -123,7 +124,11 @@
             String level = LogCtl.getLevel(Fuseki.actionLog);
             try {
                 LogCtl.setLevel(Fuseki.actionLog, "ERROR");
-                FusekiTestLib.expectQueryFail(()->conn.query("FOOBAR").execSelect(), Code.BAD_REQUEST);
+                Runnable action = ()-> {
+                    try( QueryExecution qExec = conn.query("FOOBAR") ) {
+                        qExec.execSelect();
+                    }};
+                FusekiTestLib.expectQueryFail(action, Code.BAD_REQUEST);
             } finally {
                 LogCtl.setLevel(Fuseki.actionLog, level);
             }
diff --git a/jena-integration-tests/src/test/java/org/apache/jena/test/rdflink/TestRDFLinkHTTP.java b/jena-integration-tests/src/test/java/org/apache/jena/test/rdflink/TestRDFLinkHTTP.java
index aaf51be..27468fb 100644
--- a/jena-integration-tests/src/test/java/org/apache/jena/test/rdflink/TestRDFLinkHTTP.java
+++ b/jena-integration-tests/src/test/java/org/apache/jena/test/rdflink/TestRDFLinkHTTP.java
@@ -29,6 +29,7 @@
 import org.apache.jena.rdflink.RDFLinkHTTP;
 import org.apache.jena.sparql.core.DatasetGraph ;
 import org.apache.jena.sparql.core.DatasetGraphFactory ;
+import org.apache.jena.sparql.exec.QueryExec;
 import org.apache.jena.sparql.exec.RowSet;
 import org.apache.jena.system.Txn ;
 import org.apache.jena.web.HttpSC.Code;
@@ -103,7 +104,13 @@
             String level = LogCtl.getLevel(Fuseki.actionLog);
             try {
                 LogCtl.setLevel(Fuseki.actionLog, "ERROR");
-                FusekiTestLib.expectQueryFail(()->link.query("FOOBAR").select(), Code.BAD_REQUEST);
+                Runnable action = ()-> {
+                    try( QueryExec qExec = link.query("FOOBAR") ) {
+                        qExec.select();
+                    }};
+                FusekiTestLib.expectQueryFail(action, Code.BAD_REQUEST);
+                LogCtl.setLevel(Fuseki.actionLog, "ERROR");
+                FusekiTestLib.expectQueryFail(action, Code.BAD_REQUEST);
             } finally {
                 LogCtl.setLevel(Fuseki.actionLog, level);
             }
diff --git a/jena-text/src/main/java/org/apache/jena/query/text/assembler/TextIndexLuceneAssembler.java b/jena-text/src/main/java/org/apache/jena/query/text/assembler/TextIndexLuceneAssembler.java
index 13924dd..9a59072 100644
--- a/jena-text/src/main/java/org/apache/jena/query/text/assembler/TextIndexLuceneAssembler.java
+++ b/jena-text/src/main/java/org/apache/jena/query/text/assembler/TextIndexLuceneAssembler.java
@@ -46,8 +46,7 @@
         text:entityMap <#entMap> ;
         .
     */
-    
-    @SuppressWarnings("resource")
+
     @Override
     public TextIndex open(Assembler a, Resource root, Mode mode) {
         try {
@@ -55,10 +54,10 @@
                 throw new TextIndexException("No 'text:directory' property on " + root) ;
 
             Directory directory ;
-            
+
             RDFNode n = root.getProperty(pDirectory).getObject() ;
             if ( n.isLiteral() ) {
-                String literalValue = n.asLiteral().getLexicalForm() ; 
+                String literalValue = n.asLiteral().getLexicalForm() ;
                 if (literalValue.equals("mem")) {
                     directory = new ByteBuffersDirectory() ;
                 } else {
@@ -71,7 +70,7 @@
                 File dir = new File(path) ;
                 directory = FSDirectory.open(dir.toPath()) ;
             }
-            
+
             String queryParser = null;
             Statement queryParserStatement = root.getProperty(pQueryParser);
             if (null != queryParserStatement) {
@@ -112,14 +111,14 @@
             Statement propListsStmt = root.getProperty(pPropLists);
             if (null != propListsStmt) {
                 RDFNode aNode = propListsStmt.getObject();
-                
+
                 if (! aNode.isResource()) {
                     throw new TextIndexException("text:propLists property is not a resource (list) : " + aNode);
                 }
-                
+
                 PropListsAssembler.open(a, (Resource) aNode);
             }
-            
+
             //define any filters and tokenizers first so they can be referenced in analyzer definitions if need be
             Statement defAnalyzersStatement = root.getProperty(pDefAnalyzers);
             if (null != defAnalyzersStatement) {
@@ -127,7 +126,7 @@
                 if (! aNode.isResource()) {
                     throw new TextIndexException("text:defineAnalyzers property is not a resource (list) : " + aNode);
                 }
-                
+
                 DefineFiltersAssembler.open(a, (Resource) aNode);
 
                 DefineTokenizersAssembler.open(a, (Resource) aNode);